スクリプトに算術変数を追加する方法

スクリプトに算術変数を追加する方法

フォルダに含まれる複数のファイルの行サイズを累積したいと思います。私は次のスクリプトを書いた。

let a=0
let num=0
for i in folder/*
do
        num=`cat $i | wc -l`
        a=$a+$num
done
echo $a

スクリプトの最後で得られるのは、加算算術演算の結果ではなく、123+234+432+...です。

ベストアンサー1

算術評価の構文が正しくありません。次のいずれかを使用してください(最初のものは非常に移植性がありますが遅く、2番目はBourneシェルとAlmquistシェルの初期バージョンを除いてPOSIXであり、移植可能であり、最後の3つは必須ですksh)。bashzsh

a=`expr "$a" + "$num"`

a=$(($a+$num))

((a=a+num))

let a=a+num

((a+=num))

または、ループfor全体をスキップして次のことを実行できます。

wc -l folder/*

または合計のみを希望する場合:

cat folder/* | wc -l

または、zshとそのmult_iosオプションを使用してください。

wc -l < folder/*

おすすめ記事