1

txtファイルがあります-:

file1-
abhinav,Age_10,11,12,13,14,15
deepak,Age_10,11,12,13,14,15
file2-:
Dixit,15
Skoda,15

シェルスクリプト-:

old_count=`grep 'abhinav' |  awk  'BEGIN { FS = "," } ; { print $2 }' | awk  'BEGIN { FS = "_" } ; { print $2 }'`
new_count=`grep 'dixit' | awk  'BEGIN { FS = "," } ; { print $2 }'`
sum=`expr $old_count + $new_count`

しかし、このスクリプトが実行されると、エラー expr: non-numeric argument is coming . 変数 $old_count $new_count は両方とも数値ですが。

4

1 に答える 1

1

問題が実際に何であれ回避するために、これを次のように書く方が簡単です

old_count=$( awk -F, '/abhinav/ {split($2, a, "_"); print a[2]}' file1 )
new_count=$( awk -F, '/Dixit/ {print $2}' file2 )
sum=$(( old_count + new_count ))

dixit問題の 1 つは、 ではなくを grep していたため、Dixitの値が空になった可能性がありますnew_count。別のエラーが表示されますが、これは の実装に基づいている可能性がありexprます。exprシェルでの算術演算には不要になったことに注意してください。$((...))POSIX準拠のシェルで利用できるはずです。

于 2013-11-15T14:45:02.490 に答える