2011-05-02 21 views
8

Estoy ejecutando esto en una terminal en Ubuntu 11.4.¿Salida de lectura Bash?

Di ejecuto un script bash y la salida es:

Test1: Some text... 
Test2: Some text... 
Test3: Some text... 

¿Cómo podría, en la misma escritura del golpe, almacenar la salida anterior como una o más variables?

La solución ideal sería para que esté listo para ser utilizado en un condicional, así: (línea de uno de salida se almacena en $ln1 etc.)

if [ $ln1 = "Test1: Some text..." ] ; then 

Respuesta

22

Así que quieres

output=$(command) 
while read -r line; do 
    process "$line" 
done <<< "$output" 

Consulte "Here strings" en el Bash manual.

o process substitution

while read -r line; do 
    process "$line" 
done < <(command) 
+0

¿Es posible hacer algo como esto después de la orden original, ya se ha ejecutado y se almacena en la variable de salida? – f1lt3r

+0

No entiendo su pregunta: demuestro exactamente eso en la primera parte del código. –

+0

Disculpas, me doy cuenta de que lo pregunté de una manera que no tenía sentido. Lo que quise decir es, ¿es posible capturar la salida de comandos que ya se han ejecutado? Es decir: captura la última línea de la salida del terminal, independientemente de qué comando se ejecutó? Lo más parecido que pude encontrar fue usar el comando 'script', ver: [script.html] (http://www-users.cs.umn.edu/~gini/1901-07s/files/ script.html) Sin embargo, el comando 'script' incluye todo lo que el usuario ve, incluidos los caracteres' ESC', etc., no solo la salida estándar de los comandos anteriores. – f1lt3r

Cuestiones relacionadas