Error expr:执行bash脚本时的非数字参数

时间:2013-11-15 09:49:41

标签: bash shell

有txt文件 - :

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

Shell脚本 - :

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时:非数字参数即将到来。虽然变量$ old_count $ new_count都是数字。

1 个答案:

答案 0 :(得分: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,而不是Dixit,导致new_count的空值。我得到了一个不同的错误,但这可能基于expr的实现。请注意,shell中的算术不再需要expr;任何符合POSIX标准的shell都应该提供$((...))