🙉
シェルスクリプトの基礎⑥~for文~
はじめに
くーばねてすをやっつけるためにLinuxさんと仲良くさせていただいているが、Linuxさんにはシェルのコマンドを格納しておくシェルスクリプトというファイルがあるらしいのでそれをまとめてみた。
概要
シェルスクリプトの
■for文
・for文の書式
・リストのコマンド置き換え
・forと引数
をまとめた^^
■for文
forは繰り返し処理を行うための構文だ。
doからdoneまでの部分に書いた処理が実行される。
どぅからどぅーん!?('_')
for文の書式
for 変数名 in 変数に代入したいリスト
do
繰り返したい処理
done
※ifは最後fi(ふぃ!)だったけどforはどぅからどぅーんなんだね!(>_<)
さっそくやってみる。
kouzimei.sh
$ cat kouzimei.sh
#! /bin/bash
for kouzimei in kyuusui_kouzi honnkann_kouzi gesui_kouzi
do
echo $kouzimei
done
$ ./kouzimei.sh
kyuusui_kouzi
honnkann_kouzi
gesui_kouzi
できた!(><)
kouzimeiに各水道工事名を代入してechoで出力をさせた!
for文だと=で代入しないでinで代入するんだね('')(なんでこういうの統一しないの?)
もちろん固定文字列だけでなく、パス名展開もできる。
$ cat sh_list.sh
#! /bin/bash
for sh_list in *.sh
do
ls -l "$sh_list"
done
$ ./sh_list.sh
-rwx------ 1 suidou suidou 71 Jan 10 12:18 if_suidou.sh
-rwx------ 1 suidou suidou 95 Jan 11 06:01 kouzimei.sh
略
パス展開を代入する時は囲うものに特に縛りはないのね('_')
リストのコマンド置き換え
リストの部分はコマンド置き換えできる。
リストをコマンド置き換えする
for 変数名 in $(コマンド)
do
繰り返したい処理
done
さっそくやってみる
$ cat numberfile.sh
for number in $(seq 1 5)
do
touch "000${number}.txt"
done
$ ./numberfile.sh
$ ls
-rw-r--r-- 1 suidou suidou 0 Jan 11 06:28 0001.txt
-rw-r--r-- 1 suidou suidou 0 Jan 11 06:28 0002.txt
-rw-r--r-- 1 suidou suidou 0 Jan 11 06:28 0003.txt
-rw-r--r-- 1 suidou suidou 0 Jan 11 06:28 0004.txt
-rw-r--r-- 1 suidou suidou 0 Jan 11 06:28 0005.txt
OK(>_<)
forと引数
forではリストに引数を全て指定するのによく$@が使われる。
そうするとコマンドライン引数が全て指定され、出力される。
$ cat test3.sh
#! /bin/bash
for test3 in $@
do
echo "$test3"
done
$ ./test3.sh suidou kouzi "Hello World"
suidou
kouzi
Hello World
またin リストを省略すると自動的に$@が指定される。
$ cat test3.sh
#! /bin/bash
for test3 (←省略)
do
echo "$test3"
done
$ ./test3.sh suidou kouzi "Hello World"
suidou
kouzi
Hello World
できた!(>_<)
まとめ
すっごいさむい!
Discussion