からのコマンド内の$ 1:bashの機能
は、私は引数で関数を呼び出す:
funct $size
は、その後、私は関数内でbashコマンドを実行する必要が
function funct {
arg=$1
files=(`find /var/ -mindepth 3 -maxdepth 3 -type d -exec du -bs {} \; | awk '$1>$arg'`)
}
問題は、私はいつもからawk '$size>$size'
、ない$1
を得るawk '$1>$arg'
であります結果。
誰かが助けてもらえますか? ありがとうございます。
壊れにくい(つまり、スペースやグロブなどのディレクトリ名で正しく機能する)回答に興味がありますか? –
... 'array =($(...))'やそれほど現代的ではない '' 'array =(' ... ')' ''はほとんど常にバグがあります:引用符で囲まれていない展開(個別の要素に分割する方法)は、IFSの文字列分割とglob展開の両方を行います。つまり、出力に空白で囲まれた '*'がある場合は、現在のディレクトリ)。配列を生成する正しい方法は、 'read -a'、' mapfile'、 'readarray'、または' while read'ループです。 –
...もう一つの脇に、 'function'キーワードを避けることを検討してください。これは、ベースラインのPOSIXシェルとは互換性がありません(関数を宣言するための適切な構文は 'funct(){' - 'function'キーワードの前につけられ、'() 'が必須です) bashisms - 互換性のある/標準化された構文よりも利点がありません。 –