シェルスクリプト書くときになかなか覚えていなくて、かつググラビリティが低い情報をまとめてみました。
- 6/19 コメントを元に一部修正しました
hnakamurさんありがとうございます!
参考になる文献
特殊な変数
変数 |
説明 |
$# |
シェル引数の数 |
$0 |
シェル自身のファイル名 |
$1〜$n |
シェルの各引数 |
$* |
シェルの全引数リスト(スペース区切り) |
$@ |
シェルの全引数リスト |
$$ |
シェルのプロセスID |
$! |
最後に実行したバックグラウンドプロセスID |
$? |
最後に実行したコマンドの終了コード |
演算子
共通の演算子
演算子 |
説明 |
a -a b |
AND |
a -o b |
OR |
文字列用演算子
演算子 |
説明 |
-z |
文字列長が0ならtrue (zero) |
-n |
文字列長が0より大ならtrue (not zero) |
a = b |
2変数が等しければtrue |
a != b |
2変数が等しくなければtrue |
整数用演算子
演算子 |
説明 |
a -eq b |
2変数が等しければtrue (equal) |
a -ne b |
2変数が等しくなければtrue (not equal) |
a -lt b |
aがbより小ならtrue (less than) |
a -le b |
aがb以下ならtrue (less than equal) |
a -gt b |
aがbより大ならtrue (greater than) |
a -ge b |
aがb以上ならtrue (greater than equal) |
ファイル用演算子
演算子 |
説明 |
-d |
ディレクトリならtrue (directory) |
-f |
ファイルならtrue (file) |
-s |
ファイルサイズが0より大ならtrue (size) |
-e |
ファイルが存在するならtrue (exist) |
-r |
ファイルが読み込み可能ならtrue (readable) |
-x |
ファイルが実行可能ならtrue (executable) |
-w |
ファイルが書き込み可能ならtrue (writable) |
-o |
ファイルの所有権があるならtrue (owned) |
-L |
ファイルがシンボリックリンクならtrue (Link) |
a -nt b |
aファイルがbファイルより新しければtrue (newer than) |
a -ot b |
aファイルがbファイルより古ければtrue (older than) |
変数処理
path=/path/to/file.txtのようなデータとする
varは任意の文字列
項目 |
説明 |
${path:h} |
pathのディレクトリ階層(head) |
${path:t} |
pathのファイル名(tail) |
${path:r} |
pathの拡張子以外のファイル名(root) |
${path:e} |
pathの拡張子(extension) |
${path:a} |
pathの絶対パス(all) |
${var:=値} |
varが初期化されていなければ値を変数に代入 |
${var:-値} |
varが初期化されていなければ代わりに値を返す |
${var:+値} |
varが初期化されていれば代わりに値を返す |
${var:?メッセージ} |
varが初期化されていなければメッセージを返す |
${var#正規表現} |
前方一致で最短マッチの文字列 |
${var##正規表現} |
前方一致で最大マッチの文字列 |
${var%正規表現} |
後方一致で最短マッチの文字列 |
${var%%正規表現} |
後方一致で最大マッチの文字列 |
${var/文字列1/文字列2} |
文字列1を文字列2に置換 |
リダイレクト
項目 |
説明 |
1> file |
標準出力(1は省略可能)をファイルに上書き |
2> file |
標準エラー出力をファイルに上書き |
>> file |
標準出力をファイルに追記 |
2>> file |
標準エラー出力をファイルに追記 |
>&- |
標準出力をクローズ |
command > file 2>&1 |
標準出力&標準エラー出力 |
command > /dev/null 2>&1 |
実行結果やエラーメッセージをすべて捨てる |
0< file |
標準入力(0は省略可能)にファイルから読み込む |
<< word |
標準入力にヒアドキュメントを読み込む |
<&- |
標準入力をクローズ |
: > file |
ファイルのゼロリセット |
なお上記についてfileの部分は&m (mは数字)というファイルディスクリプタ番号を指定することで1の標準出力や2の標準エラー出力以外の独自の番号にリダイレクトできます。
シグナル
trapなどで使うシグナルの一覧
trap 'commands' 番号(複数可)
で呼び出して使ったりする
項目 |
説明 |
1 |
SIGHUP ハングアップシグナル |
2 |
SIGINT キーボードからの割り込みシグナル |
3 |
SIGQUIT キーボードからの中止シグナル |
9 |
SIGKILL プロセス強制終了のキルシグナル |
15 |
SIGTERM アプリ終了のシグナル |
その他のシグナルはこちら参照