百日半狂乱

Shut the fuck up and write some code!!

シェル変数のデフォルト値を設定する、未初期化時にエラーメッセージを出力してスクリプトを強制終了する

二十五日半狂乱4日目(の分)の記事

前回引用したkilltreeスクリプトの中に以下のようなコードがあった.

local _sig=${2:-TERM}

この${2:-TERM}は、変数展開されたタイミングで、$2に値が設定されていない場合にTERMを出力する.

すなわち、結果的に$2が空だった場合は変数_sigにTERMが代入される.

なのでkilltreeは第二引数でシグナルを指定せずに実行したらデフォルトでkill -TERM [pid]が実行される.

$ bash killtree.bash 4003
kill -TERM 4004
kill -TERM 4005
kill -TERM 4006
kill -TERM 4007
kill -TERM 4008
kill -TERM 4003

[2]+  Stopped                 bash mkpstree.bash

手元にあるUNIXシェルスクリプトコマンドブックを見てみると、同書ではこの機能を「拡張的な変数展開」と呼んでいて、他にも便利な機能が色々解説されていた.

UNIXシェルスクリプトコマンドブック 第2版

UNIXシェルスクリプトコマンドブック 第2版

買った技術書の後半を読み切らずに本棚へしまっていたことが白日の下に晒されつつ、便利な変数展開をメモ.

続きを読む