■ はじめに
https://dk521123.hatenablog.com/entry/2015/02/20/001600
より分冊。 シェルのループについて、メモっておく。
目次
【1】while 1)構文 【2】for 1)構文 2)サンプル 例1:規定回数ループする 例2:拡張子「.sql」のファイル一覧表示 【3】until 1)構文 【4】その他事項 1)continue 2)break 3)cat
【1】while
* 条件が真である間、処理を繰り返す
1)構文
while [ 条件 ] do 処理 done
【2】for
1)構文
for 変数 in 引数1 引数2 … do 処理 done
逆順の場合 (tacコマンドを利用)
# tacコマンド については、後述「【4】その他事項」の「3)cat」を参照 for 変数 in 引数1 引数2 … do 処理 done | tac
2)サンプル
例1:規定回数ループする
#!/bin/bash for((i=0; i<10; i++)) do echo ${i} done
https://hacknote.jp/archives/54054/
例2:拡張子「.sql」のファイル一覧表示
#!/bin/bash list=(3.7.9 3.8.0 3.9.6 3.10.14) for value in ${list[@]} ; do echo "value=$value" done echo "*************" for value in ${list[@]} ; do echo "value=$value" done | tac length=${#list[@]} # 4 echo $length
例3:拡張子「.sql」のファイル一覧表示
#!/bin/sh for file in `ls ./*.sql`; do echo "Result = ${file}." done
【3】until
* 条件が偽である間、処理を繰り返す
1)構文
until [ 条件 ] do 処理 done
【4】その他事項
* プログラムである以下の事項は、シェルでもできる。
1)continue
https://xtech.nikkei.com/it/article/COLUMN/20060228/231135/
#!/bin/bash for((i=0; i<10; i++)) do if [ ${i} -ne 5 ]; then echo "Not 5 is ${i}" continue fi echo "GO GO GO ${i}" done
出力結果
Not 5 is 0 Not 5 is 1 Not 5 is 2 Not 5 is 3 Not 5 is 4 GO GO GO 5 Not 5 is 6 Not 5 is 7 Not 5 is 8 Not 5 is 9
2)break
https://xtech.nikkei.com/it/article/COLUMN/20060228/231133/
#!/bin/bash for((i=0; i<10; i++)) do if [ ${i} -ne 5 ]; then echo "Not 5 is ${i}" break fi echo "GO GO GO ${i}" done
出力結果
Not 5 is 0
3)tacコマンド
* 入力の行で逆順にして出力する => 繰り返しの逆にする場合に利用 => catコマンドの逆だから「tac」コマンド
https://hydrocul.github.io/wiki/commands/tac.html
逆順の場合 (tacコマンドを利用)
for 変数 in 引数1 引数2 … do 処理 done | tac
関連記事
シェル ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2014/10/23/005406
シェル ~ 基本編・構文全般 ~
https://dk521123.hatenablog.com/entry/2015/02/20/001600
シェル ~ 基本編・条件分岐 if / case ~
https://dk521123.hatenablog.com/entry/2015/05/01/000043