2012-03-30 13 views
6

Sto tentando di assegnare l'output di un comando di taglio a una variabile, tuttavia sto riscontrando uno strano problema. Sto usando la shell tcsh.Assegnazione dell'output del comando a una variabile di shell

$echo $0 
tcsh 

Questo è il comando sto facendo funzionare: (. E questo è il non il file su cui stavo lavorando, ma ho ridotto il problema a questo)

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

Ora il file reale è semplice

Test.txt:

{ {corner 

questo è tutto! Questo è il file. Se cambio la lima a questo:

{ {corner} 

opere economico, ma "a" ottiene il seguente valore:

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

Quindi penso che la Shell sta cercando di eseguire {corner come un comando e sin dalla sua manca il guscio di rinforzo di chiusura si lamenta. Qualcuno ha idea del perché mostri questo comportamento? La mia comprensione è che dovrebbe solo assegnare l'output di taglio alla variabile, ma sembra che lo assegni in modo ricorsivo! Newbie

risposta

5

Bisogna avvolgerla intorno le doppie virgolette

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

stesso vale per usi come echo

echo "$a" 

uscita

{corner 
+0

che non funziona come OP intende farlo. Questo assegnerà semplicemente "Manca}" a a. – Ketan

+0

No, questo funziona! prova echo "$ a" non echo $ a. Ma sono confuso sul perché dobbiamo farlo? – Richeek

+0

Il mio male. Ho mancato le virgolette quando echeggia $ a. – Ketan