2012-03-30 20 views
6

Estoy intentando asignar la salida de un comando de corte a una variable, sin embargo, me encuentro con un problema extraño. Estoy usando tcsh shell.Asignación de salida de comando a una variable de shell

$echo $0 
tcsh 

Este es el comando Me postulo: (., Así que este es el no el archivo que estaba trabajando pero reduce el problema a este)

$set a=`cut -f2 -d' ' test.txt` 
Missing }. //This is the output I am getting 

Ahora el archivo está realmente simple

Test.txt:

{ {corner 

Eso es todo! Este es el archivo. Si cambio el archivo a esto:

{ {corner} 

obras declaración, pero "a" obtiene el siguiente valor:

$echo $a 
corner //Please note its not {corner} but corner 

Por lo tanto creo que la cáscara está intentando ejecutar {corner como un comando y desde su falta la queja de cierre del armazón. ¿Alguien tiene alguna idea de por qué muestra este comportamiento? Tengo entendido que solo debe asignar la salida de corte a la variable, pero parece que la asigna recursivamente. Novato

Respuesta

5

Tienes que envuelve alrededor de comillas dobles

set a="`cut -f2 -d' ' test.txt`" 

mismo se aplica a usos tales como echo

echo "$a" 

salida

{corner 
+0

que no funciona como OP tiene la intención de hacerlo. Eso solo asignará "Missing}" a a. – Ketan

+0

¡Esto no funciona! intente echo "$ a" no echo $ a. Pero estoy confundido sobre por qué tenemos que hacer esto? – Richeek

+0

Mi mal. Me perdí las comillas dobles cuando hice eco de $ a. – Ketan

Cuestiones relacionadas