2012-01-11 54 views
1

我收到一個錯誤,試圖將命令的輸出寫入一個變量,該變量在函數中定義。錯誤使用命令輸出到變量在bash函數中使用awk

chk() 
     hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}') 
chk 

它告訴我一個語法錯誤:

./testchk.sh: Zeile 3: Syntaxfehler beim unerwarteten Wort hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}')' ./testchk.sh: Zeile 3: hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}')'

它的工作原理外的功能,但只是不會因爲功能的增加一些額外的報價。 任何想法,除了使用它的功能?

+0

在你的問題中是否有錯字?您需要括號({}或())在函數定義上。 – 2012-01-11 22:50:35

回答

2

我想你只需要加括號:

chk() { hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}') ; } 

工作正常,我在這裏。 bash man page表示函數必須包含複合命令,其中{列表; }就是一個例子。

+1

好的。這工作。謝謝。但它很奇怪,因爲其他功能都沒有{}。 – user1144292 2012-01-11 23:14:36

+1

您的其他功能是否具有其他複合命令格式之一? – 2012-01-11 23:28:04

1

嘗試:

 
chk() { 
     hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}') 
} 
chk