SATOH Fumiyasu
fumiy****@osste*****
2015年 11月 4日 (水) 19:02:27 JST
さとうふみやす @ OSSTech です。 At Wed, 4 Nov 2015 18:35:51 +0900, 稲原宗能 wrote: > findで簡単なシェルを書いていたのですが > http://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.htmlでは > -exec *command* ; *command* を実行する。*command* の返り値が 0 ならば、真を返す。 > > と記述してあるにもかかわらず、-exec内でこけてもマッチングさえしていれば真を返してしまいました。 find(1) の終了コードが真 (0) を返すという意味ではありませんが、 そこは大丈夫でしょうか? > ネットワークトラブルでscpが失敗した際、エラーが出なかったことから気付きました エラーとは具体的に何でしょうか? find は -exec で指定したコマンドが 0 以外を返したかどうかで自身のエラーとは判定はしません。 -exec 式(expression)の評価結果が真が偽になるだけです。 > コマンドはfind ./ -name test -exec scp -p ’{}’ [hostname]:/tmp \;です scp が失敗した時点で中断したいのであれば、こんな感じ? find ./ -name test \( -exec scp -p ’{}’ [hostname]:/tmp \; -o -quit \) ただし find 自身の終了コードを制御できないので、 スクリプトでエラー判定するには、別途工夫が必要でしょう。 xargs を使っても無理っぽいので、ちょっと面倒そうですね。 -- -- Name: SATOH Fumiyasu @ OSS Technology Corp. (fumiyas @ osstech co jp) -- Business Home: http://www.OSSTech.co.jp/ -- GitHub Home: https://GitHub.com/fumiyas/ -- PGP Fingerprint: BBE1 A1C9 525A 292E 6729 CDEC ADC2 9DCA 5E1C CBCA