2010-10-14 38 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。