Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

bashのdouble bracket ([[ ]])で論理判定する

実際のところ

こんなスクリプトがあったとします

~$ cat cmd1.bash
#!/bin/bash

printf $(basename $0)
exit 0

これを二重角カッコ内で判定すると、正は0、負は1を返します。
これに&&や||をつなげて処理を続けます。

$  [[ ./cmd1.bash  ]] && echo 0
0
$ [[ ./cmd1.bash  ]] || echo 0

応用:処理が正常に終わった/終わらないケースの処理を書く

中も論理でつなげば、処理が正常に終わった場合の処理も記述可能です。
先ほどのに続いて、おんなじようなファイルを用意し、こいつを二重角カッコ内で繋ぎます

~$ cat cmd2.bash
#!/bin/bash

printf $(basename $0)
exit 0

"&&"でつなげば論理が正で繋がれば実行され

$ [[ ./cmd1.bash && ./cmd2.bash ]] && echo 00
00

"||"で繋げば、後ろのは実行されない

$ [[ ./cmd1.bash && ./cmd2.bash ]] || echo 00