シェルスクリプトも少しやったよー

シェルスクリプトも少しやったよーシェルは個人的にちょこちょこ書いているのですが、結構検索しながらで効率が悪いのでドットインストールで基本的な部分を復習してみました。

数値演算

exprを利用して\で囲う。演算記号の前には\を付ける

echo `expr \( $x +5 \) \* 2`

配列

a=(1 2 3 4)

echo $a         # 最初の要素を取り出す(1)
echo ${a[1]}    # 1番めの要素を取り出す
echo ${a[@]}    # すべての要素を取り出す
echo ${@a[@]}   # 要素数

a[2] = 20       # 値の挿入
a+=(20 30)      # 値の追加

条件式の評価

正常終了かどうかが他の言語のtrue,falseに当たる。正常終了が0。testを利用することで評価することができる。

test 1 -eq 2; echo $?           # 等しいか
test e hello.sh: echo $?        # 存在するか
test 1 -eq 1 -a 2 -eq 2; echo $?    # 2つの条件は両方とも正しいか
  • 数値の評価
    • -eq: 等しい
    • -ne: 等しくない
    • -gt: より大きい
    • -ge: と同じかより大きい
    • -lt: より小さい
    • -le: と同じかより大きい
  • 文字列の評価
    • =: 等しい
    • !=: 等しくない
  • ファイルの評価
    • -nt: より新しい newer than
    • -ot: より古い
    • -e: 存在する
    • -d: ディレクトリである
  • 論理演算子
    • -a: and
    • -o: or
    • !: not

testの代わりに[ ]を利用することができる。

x=70
if [ $x -gt 60 ]; then
    echo "ok"
fi

[の後にはスペースを1つとる。同じように]の前にもスペースを取る。

ファイルからの入力

ファイルを一行ずつ読み込む。

i=1
while read line
do
    echo "$i: $line"
    i=`expr $i + 1`
done <$1

勉強になった。

その他、コーディングスタイルなど

シェルスクリプト Tips – UNIX & Linux コマンド・シェルスクリプト リファレンスが本当に参考になりました!!

参考

Pocket
LINEで送る

You may also like...