
Existe uma maneira de realmente executar os resultados de um comando shell, em vez de usá-los como argumentos para outro comando?
Por exemplo, gostaria de executar '--version' em todos os executáveis de uma pasta, algo como:
ls /usr/bin/ | --version
Eu encontrei uma maneira de usar find/exec:
find /usr/ -name valgrind -exec {} --version \;
Mas eu gostaria de fazer isso com ls. Estou pesquisando há mais de 45 minutos e não consigo encontrar nenhuma ajuda.
Responder1
Tente fazer isso:
printf '%s\n' /usr/bin/* | while IFS= read -r cmd; do "$cmd" --version; done
Responder2
Se você estiver tentando executar todos os arquivos executáveis em um determinado diretório com uma --version
opção, tente esta linha única (usando /usr/bin como diretório de exemplo):
for f in /usr/bin/*; do [ -x "$f" ] && $f --version; done
Responder3
Responder4
para reavaliar a saída do shell como entrada do shell, use eval
.
eval "$(your command here)"