シェルスクリプトの文法まとめ-1
シェルスクリプトの簡易的な文法まとめ
・sh(bash)で実行
#!/bin/sh
・コメント
# comment # ... # 複数行のコメントは無い # ...
・複数行に渡る記述
echo \ ABCD\ EFG >> ABCDEFG
・1行に複数のコマンドを書く
echo "ABCD"; echo "EFG" >> ABCD >> EFG
・変数への代入
VAR="ABCDE"
・変数の値の参照
$VAR ${VAR} # 動作はどちらも同じ
・空白を含む変数の値の展開
VAR="AAA BBB" $VAR # AAA BBB になる。 "$VAR" # "AAA BBB"になる。
この展開の違いは、比較の際などに注意する必要がある。
$AB="AAA BBB" if [ $AB = "AAA BBB " ] # AAA BBB = "AAA BBB"となりfalse if [ "$AB" = "AAA BBB " ] # "AAA BBB" = "AAA BBB"となりtrue
・文字列のクォーテーション
echo "\` \\ \" ' \$ \t \n $VAR" # 出力は、` \ " ' $ (tab) (改行) VARの値 echo '` \ " $ \t \n $VAR' # 出力は、` \ " $ (tab) (改行) VARの値 # '...'内部でシングルクォート(')は記述できない
・数値計算
A=10 echo 20+$A # 20+10になる echo $((20+$A)) # 30 echo `expr 20 + $A` # exprの引数として計算するので、演算子の前後に空白が必要
・コマンドの実行結果を得る
echo `date` # バッククオートを使う echo $(date) # $()を使う
・特殊変数
echo "$0" # スクリプトのファイル名 echo "$1" # 第1引数。$2, $3...もある echo "$@" # すべての引数のリスト IFS="," # リストの区切り文字を指定 echo "$*" # 指定された区切り文字で、すべての引数のリスト echo "$#" # コマンドライン引数の数 echo "$?" # 最後に実行したコマンドの終了ステータス echo "$$" # シェルスクリプト自身のプロセスID echo "$!" # バックグラウンドのプロセスのID