テキストファイル
生徒.txt
jane,good,3
bob,bad,2.6
annie,good,2.8
dan,bad,2
最初に、成功したすべての良い学生を印刷しようとしました
#!/bin/bash
while IFS=, read -r -a array; do
[[ "${array[1]}" == "good" ]] || continue
printf "%s \n" "${array[0]}" is a ${array[1]} student"
done < "student.txt"
出力
jane is a good student
annie is a good student
次に、生徒のタイプを出力した後、テキスト ファイルの 3 列目のすべての数値を合計したいのですが、うまくいきませんでした
#!/bin/bash
while IFS=, read -r -a array; do
[[ "${array[1]}" == "good" ]] || continue
printf "%s \n" "${array[0]}" is a ${array[1]} student"
for n in "${array[2]}"; do
total=$( "$total +=$n" | bc )
echo $total
done
done < "student.txt"
出力
jane is a good student
+=3: command not found
annie is a good student
+=2.8: command not found
期待される出力
jane is a good student
annie is a good student
total = 5.8
私は bash スクリプトを初めて使用するので、皆さんに助けを求める必要があります。
ああ、別のことですが、 awk ユーティリティをうまく利用できないようです。
awkなどを使用して簡単なステートメントを試したとしても
awk -F"," "{print $1}" "student.txt"
私が間違っていなければ、このようなものを返す必要があります
出力
good
bad
good
bad
しかし、代わりに、理由がわからないテキストファイルの値全体が返されます
私の出力 awk -F"," "{print $1}" "student.txt"
jane,good,3
bob,bad,2.6
annie,good,2.8
dan,bad,2
したがって、awk メソッドを使用する提案が出ていると思います。