Bye Bye Moore

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

シェルコマンドでifなしで前のコマンドが成立した時に次のコマンドを実行する

とある事情により、if文やtest([)を使わずにファイルが存在するか確認して次のコマンドを実行するという奇怪な処理を実装する必要がでてきました。
その時の調査メモです。

実際のところ

手っ取り早い方法としてlsで存在を確認し
ファイルが存在しないとエラー出力がされるので消しときます。

存在するファイルをみると、続くechoが呼び出されます

$ ls -1 real.file 2>/dev/null && echo 1
real.file
1

中身を呼び出さないでいいなら、標準出力も虚空行き

$ ls real.file >/dev/null 2>/dev/null && echo 1
1

存在しないファイルを呼び出すと、期待通りechoは実行されません

$ ls nil.file 2>/dev/null && echo 1