有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都是数字。
答案 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都应该提供$((...))
。