複数の-execパラメータを持つfindコマンドがあり、いずれかのコマンドの出力(stdoutとstderr)を抑制しようとしています。私が使うとき&>/パス/ターゲット/ファイル、これは出力をリダイレクトするのではなく、プロセスをバックグラウンドに送信します。
find /some/path -type f -exec sh -c 'scriptA.sh "$1"' _ "{}" \; -exec sh -c 'scriptB.sh "$1" &>/dev/null' _ "{}" \;
以下のコマンド(「&」文字も使用)を使用して問題の解決策を見つけましたが、通常どおり出力をリダイレクトするのではなく、プロセスをバックグラウンドで送信する理由を知りたいです。それでは、下のコマンドは機能しますが、上記のコマンドが機能しないのはなぜですか?
find /some/path -type f -exec sh -c 'scriptA.sh "$1"' _ "{}" \; -exec sh -c 'scriptB.sh "$1" >/dev/null 2>&1' _ "{}" \;
ありがとうございます!
答え1
リダイレクトの正しい構文はです2>&1
。 bash
拡張構文は許可されますが、&>
呼び出すBourneシェルまたはashバリアントはfind -exec
許可されません。