- 変数の定義
- 変数名="値"
- 変数のパターンマッチ
${変数#パターン} 変数の先頭から、パターンと最短でマッチする部分を取り除いた残りの部分を返す
${変数#$#パターン} 変数の先頭から、パターンと最長でマッチする部分を取り除いた残りの部分を返す
${変数%パターン} 変数の最後から、パターンと最短でマッチする部分を取り除いた残りの部分を返す
${変数#$#パターン} 変数の最後から、パターンと最長でマッチする部分を取り除いた残りの部分を返す
- 特殊な変数
$? 最後に実行したコマンドの終了ステータス
$# 引数の数
$0〜${n} 引数(個別) $0は起動コマンド(スクリプト)名
$@ $0以外の引数(全部)"で囲むと個別に展開される
$* $0以外の引数(全部)"で囲むとまとめて展開される
$! 最後に実行したバックグラウンドコマンドのPID
$$ シェルのPID
$- 現在のオプションフラグ
◆変数は、事前に定義する必要は無い。
- 関数の定義
- 関数名(){
・・・
}
- 呼び出し側では、
関数名 引数…
と呼び出すだけ。戻り値があれば、$?でテストできる。
- 別ファイルに定義した関数は、呼び出す前にファイルを読み込む(ドットコマンドを使うと簡単)。
. 関数ファイル名
#!/bin/bash
func(){
・・・
return 0
}
func
if [ $? -ne 0 ] ; then
echo "Function error."
fi
◆引数の明示はなし。
- 判定処理(if文)
- if test ・・・ ; then
・・・
elif [ ・・・ ] ; then
・・・
else
・・・
fi
◆testコマンドは、省略して[ ]とも記述できる。
- 判定処理(testコマンド)
- テストした結果が真か偽かで判定することができる。
- ファイル関するテストいろいろ
-r ファイル名 読み取り可なら真
-w ファイル名 書き込み可なら真
-x ファイル名 実行可なら真
-f ファイル名 普通のファイル(ディレクトリなとではない)なら真
-d ファイル名 ディレクトリなら真
-s ファイル名 0より大きいサイズなら真
- 文字列に関するテストいろいろ
-z 文字列 文字列の長さが0なら真
-n 文字列 文字列の長さが0より大きいなら真
文字列 文字列がヌルでなければ真
文字列1 = 文字列2 文字列1と文字列2が同じなら真
文字列1 != 文字列2 文字列1と文字列2が同じでないなら真
- 数値に関するテストいろいろ
数値1 -eq 数値2 数値1と数値2が等しいなら真
数値1 -ne 数値2 数値1と数値2が等しくないなら真
数値1 -lt 数値2 数値1が数値2未満なら真
数値1 -le 数値2 数値1が数値2以下なら真
数値1 -gt 数値2 数値1が数値2を超えるなら真
数値1 -ge 数値2 数値1が数値2以上なら真
- テストの結合
-a -aで結合すると、すべてのテストの結果が真であれば真
-o -oで結合すると、どれか1つのテスト結果が真であれば真
- ループ処理(while文)
- while [ ・・・ ] ; then
…
done
◆無限ループ
while : ; then …
または
while TRUE ; then …
- ループ処理(for文)
- for 変数名 in リスト ; do
…
done
◆breakとcontinue
break ループの数 //省略時は1。複数のループを一気に抜けることができる。
continue ループの深さ //省略時は1。複数のループの外側からcontinueできる。
- 算術演算子
◆exprコマンドで計算する
NUM=$(expr $NUM + 1) //NUM変数に1を足す
- リダイレクト
- 「>」 出力をファイルに切り替える(既存ファイルの内容は消える)
「>>」 出力をファイルに切り替える(既存ファイルに追加)
「<」 入力をファイルからに切り替える
- 標準エラー出力を切り替える場合
コマンド 2> /dev/null //エラー出力を捨てる
コマンド > $OUTFILE 2>&1 //標準出力と標準エラー出力をファイル(変数OUTFILEのファイル名)に出力
- 行コメント