
¿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 --version
opción, pruebe esta frase (usando /usr/bin como directorio de ejemplo):
for f in /usr/bin/*; do [ -x "$f" ] && $f --version; done
Respuesta3
Respuesta4
para reevaluar la salida del shell como entrada del shell, utilice eval
.
eval "$(your command here)"