2012-03-30 123 views
6

我想將一個cut命令的輸出分配給一個變量,但是我遇到了一個奇怪的問題。 我正在使用tcsh外殼。將命令輸出分配給shell變量

$echo $0 
tcsh 

這是我運行命令:(嗯,這是不是我工作的文件,但我這個問題化簡本)

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

現在該文件真正簡單

的Test.txt:

{ {corner 

完蛋了!這是文件。如果我的文件改成這樣:

{ {corner} 

聲明的作品,但「一」得到以下值:

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

因此,我認爲,殼牌正試圖執行{corner 爲命令和自錯過了大括號殼抱怨。有沒有人有任何想法爲什麼它顯示這種行爲?我的理解是,它應該將cut的輸出賦值給變量,但看起來像遞歸地賦值它! 新手

回答

5

你必須將其套在雙引號

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

同樣適用於使用諸如echo

echo "$a" 

輸出

{corner 
+0

這將無法正常工作OP打算這麼做。那隻會將「Missing}」分配給a。 – Ketan 2012-03-30 03:32:04

+0

不適用!嘗試回聲「$ a」不回顯$ a。但我爲什麼必須這樣做而感到困惑? – Richeek 2012-03-30 03:37:37

+0

我的不好。回顯$ a時我錯過了雙引號。 – Ketan 2012-03-30 03:39:38

相關問題