ども、シローです。
今回はシェルスクリプトで、while文、until文の書き方について整理していきます。
基本的な文法
while文
while [[ 条件式 ]] do 繰り返し処理 done
until文
until [[条件式 ]] do 繰り返し処理 done
解説
while文:条件式を満たしている間、do ~ doneの処理を繰り返す
while文は [[ ]]の間の条件を満たしている間は同じ処理を繰り返します。
for文はリストの中身を取り出して、全ての要素に対して特定の処理をすることに向いていますが
while文は特定の条件になるまでは無限ループしたいという状況に使えると個人的には考えています。
例:
- 特定のファイルが作成されるまで、待機する
- 特定のプロセスが終了するまで、待機する
特定のファイルが存在するかチェックするプログラム
while_file_created.sh
#!/bin/bash file_exists=0; while [[ $file_exists -lt 1 ]] do sleep 5; if [ -e /tmp/sample_file.txt ];then echo "File Found"; file_exists=1; else echo "File NotFound"; fi done
until文:特定の条件を満たすまで、特定の処理を繰り返す
until文は[[ ]] の中身の条件に達するまではは特定の処理を繰り返します。
while文とは[[ ]]の条件の判定が逆になっていることが多いです。
先程の特定のファイルが存在するまで無限ループするプログラムをuntil文に置き換えるとこのようになります。
until_file_created.sh
#!/bin/bash until [[ -e /tmp/sample_file.txt ]] do sleep 5; echo "File NotFound"; done echo "File Found";
まとめ
- while文は[[ ]]の条件を満たしている間はdo ~ doneの処理を繰り返す
- until文は[[ ]]の条件を満たしている間はdo ~ doneの処理を繰り返す
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.