シェルスクリプトでif 文

今回も、前回の
便利なシェルスクリプト
の続きになります
今回は、if 文を追加しました
シェルスクリプトでのif文の構文は

if 条件式
then
処理
fi

というように
if で始まり
fi で終わります
また、C言語などでよくある
if else のように使うには
if 条件式
then
処理
else
  処理
fi

というようになります
さて、今回、わかりにくかったところがあるので
メモがわりに記述してみました
if [ $# = 0 ]
という表現があるのですが
これを記述するときには
[ と ] の間には必ず半角スペースをいれないとなりません
これを普通にCやjava のように詰めてしまうと
エラーになります
原因は
[
]
などもコマンドであるためです
じつは、引数で並べてみると
[ コマンド
$# 引数1
= 引数2
0 引数3
] 引数4
という扱いになっています
コマンド、つまり cd とか chown というものと
同じ扱いなので、これらのコマンドを使用するときには
引数の間に空白をいれていたようにすることになります
<例>
chown +x file3
これを、空白をいれずに
chown+xfile3
だとエラーになります
もうひとつわかりにくいのが
$#です
これは引数の数を表す記号です
つまり、
if [ $# = 0 ]
という文の意味は
引数の数が0なら
という意味になります
引数の数が0、つまりないということは
例を出すなら
cd
という入力をした状態です
cd /home/
これだと引数は1になります
また、シェルスクリプトには
様々な条件式があります
シェルスクリプト 条件式
というように検索すると、かなりでてきます
主なもののリンクとしては
シェル・スクリプト・リファレンス INDEX
などがあります
主なものとしては
str1 = stt2
というような、今回の $# = 0 というような使い方です
これは、C や java でいう == みたいなものです
ただし、比較するのは文字列です
str1 != str2
これも同じようなもので
否定形です
~でないなら、という意味です
$# != 0
とすると、引数の値が0でないなら
という意味になります
これも同様に文字列の比較です
これらは割とわかりやすいのですが
数値比較になると、ちょっとわかりにくい表現になります
num1 -eq num2
この場合、数値が同じならという意味になります
C , Javaなら
num == num2
というかんじです
続いて
num1 -ne num2
これは否定形です
さきほどの != と同じ意味ですが
こちらは数値の比較になります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です