Puede alguien ayudar a explicar lo siguiente:Bash Scripting - cáscara de redirección de la salida de comandos
Si escribo:
a=`ls -l`
A continuación, la salida del comando ls se guarda en la variable a
pero si lo intento:
a=`sh ./somefile`
El resultado está superado en el shell (stdout
) en lugar de la variable a
Lo que esperaba era el resultado de la operación del shell que intenta ejecutar un script 'somefile
' para ser almacenado en la variable.
Por favor, indique qué está mal con mi comprensión y una posible forma de hacerlo.
Gracias.
EDIT:
Solo para aclarar, puede o no existir el guión 'somefile
'. Si aparece, quiero que la salida del script se almacene en 'a
'. De lo contrario, quiero que aparezca el mensaje de error "no such file or dir" almacenado en 'a
'
no es sobre los permisos ... quiero que los mensajes de error o los valores devueltos se almacenen en la variable. –
Lo que estoy diciendo es que no necesita ejecutar sh para ejecutar el script (y sh lo impondrá en la salida si lo hace). Simplemente ejecute el script directamente y, para eso, necesita 'chmod + x'. – paxdiablo
Pruebe lo siguiente: "chmod u + x somefile; a ='./ somefile' "y vea lo que se establece entonces. – paxdiablo