2010-10-14 95 views
1

当我使用bash运行以下代码时,它会将值5赋值给var1。UNIX,为C或KornShell中的变量赋值(ksh)

var1=$(awk '$1>$3{ print "5"}' newfile2) 
echo $var1 

但是,当我在香蕉或什么的地方使用这个相同的代码,它给了我错误。有人可以告诉我,如果有其他方法,我可以编写这段代码,这样我就可以使用C或KornShell(ksh)来运行它。

回答

4

对于C shell,使用

set var=`....` 

对于bash/ksh的

var1=$(awk '$1>$3{ print "5"}' newfile2) 
+1

问题是,为什么会有人想编写csh而不是bash的代码?显然,csh的年龄加上它令人讨厌和有限的即席分析器是bash等贝壳变得流行的原因,不是吗? – PleaseStand 2010-10-14 02:38:22

+0

你的shell告诉OP。在你的问题中提出你的意见。 AFAIK,他的老师说csh/ksh以及bash。 – ghostdog74 2010-10-14 02:39:55

+0

感谢ghostdog的新代码。我用bash和另一个尝试它。现在它们都不适用于它们。它不会将任何值分配给var1,也不会比较条件。 – 2010-10-14 02:48:04

1

使用反引号和csh的set命令。

set var1=`awk '$1>$3{ print "5"}' newfile2` 
echo $var1 
+0

谢谢。当我使用这段代码时,它没有为var1分配任何值。 – 2010-10-14 02:51:10

0

请注意,有之前和变量名后没有空格。 so,

var1=`ls` 

是你需要的。但是,如果您有

var = `ls` 

您将收到错误消息。

所以,你的代码应该是:

var1=`awk '$1>$3{ print "5"}' newfile2` 
echo $var1 

确保您在bash shell,而非C或TCSH。