2012-05-10 8 views
1
は、次のように

私はbashの機能を持っている:私はそれを実行するとこれはなぜ構文エラーですか?

function folderSize{ 
    du -hs | awk '{print $1}' 
} 
folderSize 

私は次のエラーを取得する:

./size.sh: line 2: syntax error near unexpected token `du' ./size.sh: 

line 2: ` du -hs | awk "{print $1}"' 

いずれかが私を助けることができますか?

+0

いくつかの問題:私は通常、多少のようにそれを行います。あなたは関数を呼び出すために$を必要としません。 2. duコマンドの引数が必要です。3. bash関数を呼び出すときには、括弧を使用しないで、argに必要な文字列を使用します。私のバージョンが動作し、より慎重に検査することができます。 – johnshen64

+0

du-hsをcwd上で実行しないでください。 – GeneralZero

答えて

5

{の前にスペースが必要です。

function folderSize { 
    du -hs | awk '{print $1}' 
} 

はまた、あなたが関数を呼び出す方法は、何のドル記号、なし括弧だけfolderSizeではありません。

+0

私はこれを 'function folderSize {du -hs | awk '{print $ 1}'}はまだ同じエラーを持っています – GeneralZero

+1

はまだスペースがないようです。 'folderSize'の後と '{'の前にスペースが必要です。そして、すべてを1行で宣言しようとするなら、 '}'の前にセミコロンも必要です。 –

+0

ありがとうございました – GeneralZero

0

異形の構文が正しいかどうかわかりません。

folderSize() { 
    du -hs | awk '{print $1}' 
} 
folderSize 
+0

fnName()は古いBourneシェル構文であり、正常に動作します。括弧が解析を分解するので、スペースなしで逃げることもできます: 'folderSize(){du -hs | awk '{print $ 1}'; } ' –

+0

@MarkReedそれを知らなかった、情報ありがとう。 –

0
function folderSize { 
    du -hs $1 | awk '{print $1}' 
} 

folderSize '.' 
+0

なぜパラメータを導入したのか、なぜコールの引数を引用しているのか分かりませんが、それは最大限の汎用性のために 'du -hs" $ @ "'としてうまくいくでしょう。 –

+0

ありがとうございます。あなたは議論の一般化について正しいです。私はちょうどそれを動作させようとしていました:-)私は現在のディレクトリをテストするために引数を追加しました。 – johnshen64

関連する問題