シェルスクリプトのお勉強
普段、シェルスクリプトなど使わないのだけれども、使う機会が出来たのでちょっとメモするよ。 ちなみにcshやbach,zshでは無くて、普通のsh。このあたりの書き分けはめんどくさいよね。
if文
if [ "条件1" ]; then
elif [ "条件2" ]; then
else
fi
比較式
■数値の場合
| オプション | 使用例 | オプションの意味 | 数式 | 略しなかった場合 |
| -eq | num1 -eq num2 | num1とnum2が等しければ真となる。 | num1=num2 | equal |
| -ne | num1 -ne num2 | num1とnum2が等しくなければ真となる。 | num1≠num2 | not equal |
| -lt | num1 -lt num2 | num1がnum2より小ならば真となる。 | num1 | less than |
| -le | num1 -le num2 | num1がnum2以下ならば真となる。 | num1≦num2 | less than or equal |
| -gt | num1 -gt num2 | num1がnum2より大ならば真となる。 | num1>num2 | greater than |
| -ge | num1 -ge num2 | num1がnum2以上ならば真となる。 | num1≧num2 | greater than or equal |
■文字列の場合
等しい場合
if [ "A" = "B" ]; then
fi
等しくない場合
if [ "A" != "B" ]; then
fi
ここでちょっとつまずいたこと、文字列の比較対象に変数を置くとき、変数が空の場合には下記のようなエラーが出ます。
[: 10: =: unexpected operator
この場合には変数を”(ダブルクォーテーション)で囲みましょう。
if [ "$D" = "abc" ]; then
fi
www.geocities.jp
tips
後、初歩的な事だけどつまずいた。変数に値を代入する場合は、スペースは空けないこと。
# NG
DATE = "20100727"
# OK
DATE="20100727
その他には、コマンドを変数に代入するには逆クォーテーション(`)で囲むこととか。
DATE=`date --date '1day ago' '+%Y%m%d'`
以上。