以下のコマンドでは、コマンドの代わりに$0
見つかったファイルを評価する理由がわかります。find
echo
$ find . -type f -perm -u=x -exec bash -c '
/bin/echo $0 is the name of the file' {} \;
$0
二重引用符、等号を使用し、一重引用符を使用すると拡張が遅れることがわかりますが、呼び出されるコマンド(通常)なので-bash
拡張されないのはなぜですか?/bin/echo
$0
答え1
bash
マニュアルページから:
-c If the -c option is present, then commands are read from the first
non-option argument command_string. If there are arguments after
the command_string, they are assigned to the positional
parameters, starting with $0.
bash
ファイル名は中括弧を使用して引数として提供されるため、{}
に割り当てられます$0
。$0
その後、拡張は bash によって行われます。以前電話してみてください/bin/echo
。