使用 -exec eval 查找 $0

使用 -exec eval 查找 $0

在下面的命令中,我想知道为什么$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

相关内容