bcのマニュアルページを読むと、bcは単純な変数だけでなく、配列も入力として受け入れることができるようです。
ただし、2つの配列を追加しようとすると、出力として1つの要素しか取得されません。
a=(1 2 3)
b=(10 11 12)
c=`echo "$a + $b" | bc`
その場合、cには11のみが含まれます。配列内のすべての要素をbcで操作して、出力として(11 13 15)を生成する方法がある場合はどうでしょうか。または、ループを実行する必要がありますか?
bcはbash配列にネイティブにアクセスできませんが、2つの配列から加算演算のストリームを生成し、その結果を3番目の配列に読み戻すことができます(したがってbc
、bc
ループごとに個別のコピーを実行するのではなく、1回呼び出すだけで済みます)。 )::
a=(1 2 3)
b=(10 11 12)
readarray -t c < <(for idx in "${!a[@]}"; do
echo "${a[$idx]} + ${b[$idx]}"
done | bc)
declare -p c # print output as an array definition
printf '%s\n' "${c[@]}" # print output one entry per line
https://ideone.com/YuPhQPで実行され、出力として適切に出力されていることを確認してください。
declare -a c=([0]="11" [1]="13" [2]="15")
11
13
15
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加