Executar resultados stdout

Executar resultados stdout

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 --versionopçã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

perlefesta;

ls -1 | perl -pe 's/\n/ --version;\n/g' | bash

ouxargs;

ls -1 | xargs -I {} bash {} --version;

Responder4

para reavaliar a saída do shell como entrada do shell, use eval.

eval "$(your command here)"

informação relacionada