0

シェルスクリプト チートシート まとめ

■特殊な変数

変数 説明
$# シェル引数の数
$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 アプリ終了のシグナル

その他シグナル参照

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です