Chefでrbenv環境を構築する際に.bash_profileを書き換える。この時にすでに命令が入っていれば書き換えをしたくない。
この動作はnot_if句を導入することで可能だけど、コマンドの戻り値がわからないと正しく動いているかを確認できない。
命令に対して戻り値を確認する方法は実行後に$?を確認する。ここではrbenvの.bash_profile書き換えを参考にして例を載せておく。
rbenvでは下記のexportを.bash_profileに書き込む。
export PATH="$HOME/.rbenv/bin:$PATH"
すでにこのステートメントがあるならば書き込みしたくない。grepで確認ができる。このときに戻り値は以下のようになる。
rbenvがない場合
[maka@localhost ~]$ grep abcde ~/.bash_profile [maka@localhost ~]$ echo $? 1
rbenvがすでにある場合
[maka@localhost ~]$ grep rbenv ~/.bash_profile export PATH="$HOME/.rbenv/bin:$PATH" [maka@localhost ~]$ echo $? 0