2012-01-11 10 views
1

コマンドの出力を関数に定義された変数に書き込もうとしているときにエラーが発生しました。awkを使用したbash関数の変数へのコマンド出力を使用するエラー

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

質問に誤字はありますか?関数定義で角括弧({}または()のいずれか)が必要です。 –

答えて

2

私はあなただけのブレースを追加する必要があると思う:

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

作品罰金私のためにここに。 bash man pageには、複合コマンドが含まれている必要があります。このコマンドのうち、{リスト、 }は一例です。

+1

大丈夫です。これはうまくいった。ありがとう。しかし、他のすべての機能が{}なしで機能していたので、それは不思議です。 – user1144292

+1

他の関数には、他の複合コマンド形式のうちの1つがありましたか? –

1

試してみてください。

 
chk() { 
     hostsum=$(md5sum /etc/hosts | awk -F" " '{print $1}') 
} 
chk 
関連する問題