# プログラミング # 技術的な話題# 技術的な話題-シェルスクリプト

シェルスクリプトのお勉強

普段、シェルスクリプトなど使わないのだけれども、使う機会が出来たのでちょっとメモするよ。 ちなみにcshやbach,zshでは無くて、普通のsh。このあたりの書き分けはめんどくさいよね。

if文

if [ "条件1" ]; then

elif [ "条件2" ]; then

else

fi
比較式

■数値の場合

オプション使用例オプションの意味数式略しなかった場合
-eqnum1 -eq num2num1とnum2が等しければ真となる。num1=num2equal
-nenum1 -ne num2num1とnum2が等しくなければ真となる。num1≠num2not equal
-ltnum1 -lt num2num1がnum2より小ならば真となる。num1less than
-lenum1 -le num2num1がnum2以下ならば真となる。num1≦num2less than or equal
-gtnum1 -gt num2num1がnum2より大ならば真となる。num1>num2greater than
-genum1 -ge num2num1がnum2以上ならば真となる。num1≧num2greater than or equal

■文字列の場合

等しい場合

if [ "A" = "B" ]; then
fi

等しくない場合

if [ "A" != "B" ]; then
fi

ここでちょっとつまずいたこと、文字列の比較対象に変数を置くとき、変数が空の場合には下記のようなエラーが出ます。

[: 10: =: unexpected operator

この場合には変数を”(ダブルクォーテーション)で囲みましょう。

if [ "$D" = "abc" ]; then
fi

tips

後、初歩的な事だけどつまずいた。変数に値を代入する場合は、スペースは空けないこと。

# NG
DATE = "20100727"

# OK
DATE="20100727

その他には、コマンドを変数に代入するには逆クォーテーション(`)で囲むこととか。

DATE=`date --date '1day ago' '+%Y%m%d'`

以上。