2012-03-30 74 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

相关问题