0

私は3つ持っていarrays A, B, Cます。配列 AB 値はファイルから解析されており、それらを合計してarray C.

#!/bin/bash
i=0
A=()
B=()
C=()
while read line
do
  A[i]="$(echo $line| cut -d\  -f4)"
  B[i]="$(echo $line| cut -d\  -f11)"
  echo ${A[i]} " and " ${B[i]}
  # outputs correct values
  C[i]=`expr ${A[i]} + ${B[i]}`
  echo ${C[i]} 
  # no output
  i=$((i+1))
done < ~/file
exit 0

その割り当ての何が問題になっていますか?

スクリプトからの完全な行:

hitEnd[i]=`expr ${hitLength[i]}+${hitStart[i]}`
echo "${hitEnd[i]}"
#no output
4

2 に答える 2

1

この線:

    C[i]=`expr ${A[i]} + ${B[i]}`

2 つのオペランドのいずれかが欠落している場合、エラーが発生します。それが予想される場合、つまり、ファイルに空のフィールドがある場合は、次のようになります。

   C[i]=$((${A[i]:-0}+${B[i]:-0}))

動作するはずです。

于 2012-12-01T08:42:13.223 に答える
0

スクリプトは正しく見えます。配列を正しく構築できない可能性があります。

また、エラーを避けるために、常に変数を二重引用符で囲んでください。

于 2012-12-01T07:45:10.780 に答える