🙉

シェルスクリプトの基礎⑥~for文~

2021/01/11に公開

はじめに

くーばねてすをやっつけるために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