O que significa “'_', '-', '-' ou a string vazia é usada para as mensagens de erro do shell” significa?

0

De link

Note that the second sh above goes into the inline script's $0. You should use something relevant there (like sh or find-sh), not things like _, -, -- or the empty string as that is used for the shell's error messages:

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

O que " _ , - , -- ou a string vazia é usada para as mensagens de erro do shell" significa?

Por que usar inline-sh não funciona no exemplo, já que inline-sh não é _ , - , -- ou a string vazia?

Obrigado.

    
por Tim 08.06.2018 / 15:15

2 respostas

6

O assunto de "é usado para as mensagens de erro do shell" é " $0 ", não " _ , - , -- ou a string vazia". O valor dado a $0 é usado para mensagens de erro; então você não deve especificar um valor sem sentido para $0 , caso contrário, você receberá mensagens de erro estranhas. Pode fazer mais sentido como

Note that the second sh above goes into the inline script's $0. You should use something relevant there (like sh or find-sh), not things like _, -, -- or the empty string, as the value in $0 is used for the shell's error messages:

inline-sh funciona no exemplo: é usado na mensagem de erro, que é o ponto principal do exemplo.

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

A mensagem de erro informa que é um inline-sh que falha ao abrir um arquivo ./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

Torna menos óbvio e mais confuso para o usuário o que realmente está falhando em abrir esse ./accept_ra .

Daí a recomendação de usar um valor significativo para o primeiro argumento após sh -c 'code' . Repetir o nome do comando geralmente é bom. Como em

sh -c 'code using "$@"' sh  actual arguments to the inline script
    
por 08.06.2018 / 15:23

Tags