先頭に以下の記述をする。
・通常
#! /bin/bash
・デバック
#! /bin/bash -x
※実行時に下記指定でも同じ結果になる。
sh -x スクリプト名
# を付けると、その行がコメントになる。
; を付けると、1行に複数文を記述できる。
・変数は、大文字、小文字が区別される。
・代入
val=1
※=の前後でスペースを入れない。
・参照
$val
${val}
・文字列連携
$val1$val
・変数を展開しない
'$val'
・変数を使った演算
echo `expr $x + 1`
※要素間にスペースが必要。()*/を使う場合は\を入れる。
・readonlyを付けると読み取り専用変数になる。
readonly val
・宣言の仕方
array=(1 2 3 aaa)
・要素を取り出す方法
$array 先頭の要素が出力される。
${array[0]} インデックスで指定した要素を取得する。
${array[@]} 全ての要素を取得する。
${#array[@]} 要素数を取得する。
・要素を変更する方法
array[1]=10
・要素を追加する方法
array+=(10, 20)
・テストコマンド
条件式を評価する。true:0, false:1 を返す。
・条件の書き方
・文字
等しい $str1 = $str2
異なる $str1 != $str2
・数値
等しい -eq
異なる -ne
数値1 < 数値2 $num1 -lt $num2
数値1 > 数値2 $num1 -gt $num2
数値1 <= 数値2 $num1 -le $num2
数値1 >= 数値2 $num1 -ge $num2
・ファイル・ディレクトリ
file1が新しい file1 -nt file2
file1が古い file1 -ot file2
fileが存在 -e file
ディレクトリが存在 -d dir
・論理演算し
and -a
or -o
not !
if [ 条件式 ]; then
処理1
elif [ 条件式 ]; then
処理2
else
処理3
fi
case 変数 in
値1)
処理1
;;
値2)
処理2
;;
*)
前述の条件に該当しない場合に実行される処理
;;
esac
for i in ${a[@]}
do
処理
done
・continue 次の繰り返し処理に移る。
・break 繰り返し処理から抜ける。
・seq 1 10 1から10までインクリメントする。
while [ 繰り返し条件 ]
do
処理
done
無限ループ
while :
do
処理
done
$0 実行しているスクリプト名
$1 第1引数
$@ 全ての引数
$# 引数の個数
read $val
select $val in 値1 値1
do
処理
break;
done
while read line
do
処理
done < $1
※第一引数で与えたファイルを読み込む場合
・宣言
function func() {
処理
}
※functionは省略可
・呼び出し
func
・関数の引数
func 変数1 変数2
・変数のスコープ
何もしないとグローバルになる。
変数宣言時にlocalを付けると、ローカル変数になる。