Ejecutar resultados estándar

Ejecutar resultados estándar

¿Existe alguna manera de ejecutar realmente los resultados de un comando de Shell, en lugar de usarlos como argumentos para otro comando?

Por ejemplo, me gustaría ejecutar '--version' en todos los ejecutables de una carpeta, algo como:

ls /usr/bin/ | --version

Encontré una manera de usar find/exec:

find /usr/ -name valgrind -exec {} --version \;

Pero me gustaría hacerlo con ls. Llevo más de 45 minutos buscando y no encuentro ayuda.

Respuesta1

Intenta hacer esto:

printf '%s\n' /usr/bin/* | while IFS= read -r cmd; do "$cmd" --version; done 

Respuesta2

Si está intentando ejecutar cada archivo ejecutable en un determinado directorio con una --versionopción, pruebe esta frase (usando /usr/bin como directorio de ejemplo):

for f in /usr/bin/*; do [ -x "$f" ] && $f --version; done

Respuesta3

perlayintento;

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

oxargos;

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

Respuesta4

para reevaluar la salida del shell como entrada del shell, utilice eval.

eval "$(your command here)"

información relacionada