ShellスクリプトのTipsです。
シェル変数の初期化をする
変数に値が設定されていない場合は、指定された値を返します。
1
|
|
パラメーターを取得する
$@
にパラメーターが格納されています。
例えば以下の記述をした for.sh ファイルを作成します。
1 2 3 |
|
以下のように出力されます。
1 2 3 |
|
評価結果を変数に格納する
"$()"
で囲めば、評価結果を変数に格納することができます。
1 2 3 4 5 6 7 8 9 |
|
if と test コマンドの合わせ技
ifとtestコマンドを使う場合はtestコマンドを省略した[]
がよく使われます。
[ 文字列1 = 文字列2 ]
[ 数値1 オプション 数値2 ]
[ オプション 評価対象 ]
[ の直後と ] の直前には必ず半角スペースが必要です (無いと正常に動作しません)。
ちなみに比較は ==
でなくて =
です。
シェルの比較は文字列の比較と数値の比較があり、それぞれに対応するオペレーターがあります。
そのせいで複雑になっている印象があります。
数値の比較
数値1と数値2が等しいかどうか
-eq
、もしくは =
を使います。
1 2 3 4 |
|
数値1と数値2が等しくないかどうか
-ne
を使います。
1 2 |
|
!=
でも動作しますが、慣習的にあまり使わないようです。
文字列の比較
文字列1と文字列2が等しいかどうか
同じ場合にtrueを返す=
と その否定である !=
を使います。
1 2 |
|
ちなみに数値の比較に使う -eq
で比較したところエラーとなりました。
1 2 3 |
|
文字列1と文字列2が等しくないかどうか
文字列比較のNOT条件
!=
を使用します。
1
|
|
数値比較のNOT条件
数値の比較の場合は -ne
オプションを使うのが慣習のようです。
1
|
|
変数が空かどうか
1
|
|
空でないかを判定する場合は -n
を使います。
1
|
|
findで抽出したファイルをreadコマンドで1行ずつ処理する
1
|
|
実行ファイルのあるパスを取得する
1
|
|
1つ上のディレクトリは以下のように取得する
1
|
|