LoginSignup
3
3

More than 5 years have passed since last update.

chef の not_if とか only_if は何を基準に真偽を判定してるのか

Last updated at Posted at 2015-01-18

概要

chef で使う not_if とか only_if は何を基準にして真偽を判定してるのかがずっと謎でした。例えば

not_if grep hoge piyo.txt

は何となく piyo.txt に hoge と書かれてなければ実行されるっぽいのですが、厳密にはどこを見て真偽を決めているのかがわかっていませんでした。

結論

実は UNIX コマンドには戻り値が存在し、それが 0 のとき true, それ以外のとき false として扱われます。

また、戻り値は端末上でコマンドを実行したあと echo $? を実行すると確認できます。

$ ls chef-repo/
Berksfile  Berksfile.lock  cookbooks  data_bags  environments  nodes  readme.md  roles  site-cookbooks

$ echo $?
0

$ ls chef-repoooooooooooooooo/
ls: cannot access chef-repoooooooooooooooo: そのようなファイルやディレクトリはありません

$ echo $?
2

知らなかったのは自分だけでしょう。

3
3
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3