~からhttps://unix.stackexchange.com/a/156010/674
上記の2番目の項目は
sh
インラインスクリプトに入ります。シェルエラーメッセージに使用される空の文字列ではなく$0
関連項目(sh
orfind-sh
など)を使用する必要があります。_
-
--
$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' inline-sh {} \; inline-sh: ./accept_ra: Permission denied
_
「-
、--
またはシェルエラーメッセージの空の文字列」とはどういう意味ですか?
または、空の文字列ではないので、例ではinline-sh
workを使用しないのはなぜですか?inline-sh
_
-
--
ありがとうございます。
答え1
「シェルのエラーメッセージ」のタイトルは、「「でない」、「でない、空の文字$0
列_
」です。指定された値はエラーメッセージに使用されるため、意味のない値を指定しないでください。それ以外の場合は、奇妙なエラーメッセージが表示されます。これはもっと言葉になるかもしれません。-
--
$0
$0
上記の2番目の項目は
sh
インラインスクリプトに入ります。などの項目や空の文字列ではなく、関連$0
項目(sh
orfind-sh
など)を使用する必要があります。これは、inの値がシェルのエラーメッセージに使用されるためです。_
-
--
$0
inline-sh
する例で作業する:例の焦点であるエラーメッセージに使用されます。
答え2
$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' inline-sh {} \;
inline-sh: ./accept_ra: Permission denied
エラーメッセージはファイルをinline-sh
開くことができないことを知らせます./accept_ra
。
$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' _ {} \;
_: ./accept_ra: Permission denied
$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' '' {} \;
: ./accept_ra: Permission denied
ファイルを開けない正確な理由が何であるか、ユーザーにはあまり明確で混乱しません./accept_ra
。
したがって、後の最初のパラメータには意味のある値を使用することをお勧めしますsh -c 'code'
。通常、コマンド名を繰り返すと機能します。のように
sh -c 'code using "$@"' sh actual arguments to the inline script