ドットインストールで基本的な部分を復習してみました。
シェルは個人的にちょこちょこ書いているのですが、結構検索しながらで効率が悪いので数値演算
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 コマンド・シェルスクリプト リファレンスが本当に参考になりました!!