encontrar com -exec eval de $ 0 [duplicado]

2

No comando a seguir, gostaria de saber por que $0 foi avaliado para o arquivo encontrado por find e não pelo comando echo .

$ find . -type f -perm -u=x -exec bash -c '
  /bin/echo $0 is the name of the file' {} \;

Eu sei que se eu tivesse usado aspas duplas, $0 seria igual a -bash e usar aspas simples atrasa a expansão, mas por que não expande para /bin/echo , já que é o comando chamado (que normalmente seja $0 )?

    
por Gregg Leventhal 12.05.2015 / 16:30

1 resposta

2

Na página de manual 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.

O nome do arquivo é dado a bash como um argumento usando as chaves {} , portanto, ele é atribuído a $0 . A expansão de $0 é então feita por bash anterior para chamar /bin/echo .

    
por 12.05.2015 / 16:41