2010-03-22 18 views
8

Para ilustrar mi problema,Tubería una variable fiesta en awk y almacenar la salida

TEST="Hi my name is John" 
OUTP=`echo $TEST | awk '{print $3}'` 
echo $OUTP 

lo que esperaría que esto es hacer pasar la variable de prueba en $ awk y almacenar la tercera palabra en $ SAL.

En su lugar recibo "Hola: no encontrado", como si esperara que la entrada fuera un archivo. Sin embargo, si paso solo una cadena en lugar de una variable, no hay problema. ¿Cuál sería la mejor manera de abordar esto?

¡Gracias a todos!

+0

funciona bien para mí! – Vijay

+0

¿Está utilizando los trazos atrás para asignar a PRUEBA. Copie y pegue desde el script que da el error –

Respuesta

17
#!/bin/bash 
TEST="Hi my name is John" 
set -- $TEST 
echo $3 

#!/bin/bash 
TEST="Hi my name is John" 
var=$(echo $TEST|awk '{print $3}') 
echo $var 
+0

buen uso de 'set --' –

+0

Esto parece funcionar en el símbolo del sistema, pero cuando se ejecuta como un script de shell todavía obtengo Hola: no encontrado. Cualquier forma de arreglar esto? ¡Gracias! –

+0

EDITAR: No importa, estaba poniendo un espacio extra antes de $ cuando establezco la variable. ¡Muchas gracias por la ayuda! –

1

Al igual que con otros, esto funciona para mí, ya que está, pero tal vez añadiendo comillas dobles (") alrededor $TEST en la línea 2 ayudaría. Si no, más información específica sobre el sistema en el que está ejecutando bash podría ayudar.

0

Una forma de reproducir un comportamiento similar:

$ alias echo='echo;' 
$ echo Hi 
Hi: command not found 
$ alias 
alias echo='echo;' 
$ unalias echo 
$ echo Hi 
Hi 
4

En una línea:

echo $(echo "Hi my name is John" | awk '{print $3}') 
Cuestiones relacionadas