0

ループ内には、別の変数の を使用して、計算に使用する変数がありbcます。しかし、私が得た結果は完全に間違っています。test0などの名前の32 個のファイルがありますtest1。私のスクリプトは次のようになります。

for i in {0..31}; do
  declare x$i=$(wc -l < test$i)
  declare y$i=$(echo $x$i/10 | bc) 
done

変数 についてはx、良い結果が得られました。つまり、それぞれx$iに対応する行数が格納されていtest$iます。x$i次に、それぞれの 10% がどれくらいかを簡単に知り、変数に格納したいと思いますy$i。そして、上で述べたように、そのスクリプトを使用すると完全に間違った結果が得られます。たとえば、x0=155287510の場合、 y0=20 になります。

4

1 に答える 1

6

問題は、$x$iという名前の変数の値ではなく、変数とx$iの値の連鎖です。xi

スクリプトを変換して Bash 配列を簡単に使用できますが、Awk でこれを行う方がよいようです。

declare -a x
declare -a y
for i in {0..31}; do
  x[$i]=$(wc -l < test$i)
  y[$i]=$(echo "${x[$i]}"/10 | bc) 
done

計算結果だけが欲しい場合は、

wc -l test[0-9] test[12][0-9] test3[01] |
awk '{$1 /= 10 }1'
于 2014-09-23T10:50:01.887 に答える