Assim fazendo
$(cat /etc/passwd)
resulta em "Nenhum arquivo ou diretório"
e
"$(whereis cat)"
resulta em "comando não encontrado"
Por que a substituição de comando não está funcionando da maneira esperada?
Assim fazendo
$(cat /etc/passwd)
resulta em "Nenhum arquivo ou diretório"
e
"$(whereis cat)"
resulta em "comando não encontrado"
Por que a substituição de comando não está funcionando da maneira esperada?
TL;DR: Você pode estar usando a substituição de comando da maneira errada.
Embora você não forneça a mensagem de erro completa, é muito provável que a substituição do comando funcione exatamente como pretendido.
Substituição de comando significa que a saída de um comando é colocada no lugar onde a substituição de comando é especificada. Isso significa que se você tiver um script com uma linha
o script tentará executar o conteúdo do arquivo
/etc/passwd
, conforme impresso porcat
, que consiste em:
campos separados por - comoo que obviamente não é um comando válido.
Da mesma forma, se você tiver uma linha
no seu script, ele tentará executar o "comando"
(ou similar, dependendo da sua distribuição) que falhará porque não há comando
cat:
no seu sistema. Isso é agravado pelo uso de" ... "
-quoting - geralmente a coisa certa a fazer - que faz o shell tratar a linha inteira (incluindo espaços) como um nome de comando que ele tenta executar.