LoginSignup
6
7

More than 5 years have passed since last update.

$$とか||で条件付きコマンド実行 (linux)

Last updated at Posted at 2014-10-09

概要

testコマンドというか直前に実行した確認コマンドの結果次第でやりたいコマンド実行したい時の書き方。たまに使おうとすると思い出すのに時間がかかるのでめも。

参考:Linuxコマンド集 - 【 test 】 条件式の真偽を判定する:ITpro

&&で条件が真だったら実行

ユーザが誰か?を確認の上でコマンド実行 echo "run"はまぁ好きなコマンドで。

### $USERと文字列比較して実行。
[test-user@hoge ~]$ test $USER = test-user && echo "run"
run

### 別ユーザだったら何もしない。
[root@hoge ~]# test $USER = test-user && echo "run"
[root@hoge ~]#

### testコマンドは[]でも書けるけど分かりづらいのであまり好きくない。
[test-user@hoge ~]$ [ $USER = test-user ] && echo "run"
run

### コマンド実行結果で条件。
[test-user@hoge ~]$ test `whoami` = test-user && echo "run"
run

あまり使わないのだけどrootでもない特権ユーザがいて、そいつが実行するようにカスタムしてるミドルウェアでうっかりrootでやるとファイル所有者とかごたごたになる問題になる場合とかでたまにいる。

手順書とかで確認コマンド実行→目視確認→やりたいコマンド実行とかで毎度定型なのはちょっと仕掛けたくなる。

ファイルあるか?とかなんかの結果が指定文字列と一致したらとか条件工夫したい場合はtestコマンドのオプションで頑張る。

||で条件が偽だったら実行

crondで定期的にコマンド実行して失敗したらコマンド実行したりとか。
雑にプロセス監視したい場合とかプロセス消えたらメール送ったりに使える。

$ crontab -l
* * * * * ps -C httpd > /dev/null || /bin/mail -s "test mail" hoge@hoge.com

httpd(お好きなものを)を毎分監視して死んでたらメール送って教えてくれる。
(死んだら毎分メール来るとかは気にしない...)

もろもろ根本的な対策ではないのは重々承知している。

以上。

6
7
0

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
6
7