シェルスクリプト基本構文備忘録
今までちゃんとシェルスクリプトを勉強したことがなかったのですが
今回仕事で使う機会があったので組みながら勉強してみました。
他のスクリプト言語でも良かったんだけど
覚えたかったのでシェルスクリプトを選択!
勉強した内容を備忘録として下記に残します。
比較演算子
= | != | > | <= | >~ | |
---|---|---|---|---|---|
-eq | -ne | -gt | -lt | -ge | -le |
論理演算子
! | and | or |
---|---|---|
! | -a | -o |
if文
通常
if [ $1 -eq $2 ]; then echo "=" elif [ $1 -gt $2 ]; then echo ">" else echo "other" fi
thenをifの次の行に置くのが一般的?
2行になるのがどうも馴染めないので「;」を使って1行にまとめて使うことにする。
「[」の後に半角スペースが必要。(嵌った。。)
case文
case $1 in 1) echo "1";; 2) echo "2";; 3 | 4) echo "3 or 4";; *) echo "other";; esac
「;;」がbreak。
「*)」がdefault。
for文
通常
for num in 1 2 3 4 5; do echo ${num} done
「for arg in $@; do」で引数を1つずつ処理可能。
ファイル毎に処理
for file in /var/log/*; do echo ${file} cat ${file} done
ディレクトリを指定しているところをコマンドにすると色々出来そうです!
while文
通常
while [ ${i} -lt 10 ]; do i=`expr ${i} + 1` done
whileの条件文に戻る場合はcontinueを使う。
途中で抜ける場合はbreakを使う。case文とは異なる。。
ファイルを1行ずつ読み込む
while read line; do echo ${line} done < ${file}
EOFでwhileを抜ける。
標準出力から読み込む
ls | while read file; do echo ${file} done
until文
until [ ${i} -gt 0 ]; do i=`expr ${i} - 1` done
条件のところをコマンドにして、処理のところにsleepを入れれば
正常終了するまでコマンドを繰り返すことが可能。