「_`、`-`、`--`、またはシェルエラーメッセージの空の文字列」とはどういう意味ですか?

「_`、`-`、`--`、またはシェルエラーメッセージの空の文字列」とはどういう意味ですか?

~からhttps://unix.stackexchange.com/a/156010/674

上記の2番目の項目はshインラインスクリプトに入ります。シェルエラーメッセージに使用される空の文字列ではなく$0関連項目(shorfind-shなど)を使用する必要があります。_---

$ find . -name accept_ra -exec sh -c 'echo 0 > "$1"' inline-sh {} \;
inline-sh: ./accept_ra: Permission denied

_---またはシェルエラーメッセージの空の文字列」とはどういう意味ですか?

または、空の文字列ではないので、例ではinline-shworkを使用しないのはなぜですか?inline-sh_---

ありがとうございます。

答え1

「シェルのエラーメッセージ」のタイトルは、「「でない」、「でない、空の文字$0_」です。指定された値はエラーメッセージに使用されるため、意味のない値を指定しないでください。それ以外の場合は、奇妙なエラーメッセージが表示されます。これはもっと言葉になるかもしれません。---$0$0

上記の2番目の項目はshインラインスクリプトに入ります。などの項目や空の文字列ではなく、関連$0項目(shorfind-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

関連情報