2013-11-15 55 views
1

有文件級TXT:錯誤EXPR:非數值參數在執行bash腳本

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執行:非數值參數即將到來。雖然變量$ old_count $ new_count都是數字。

+0

'awk'BEGIN {FS =「_」}; {print $ 3}''不會產生任何輸出。您想要打印第二個字段,即說'print $ 2'。 – devnull

+0

yes dev我想要T_10的第二個值,即10進入變量old_count。抱歉,這是錯誤的錯誤,但也是相同的錯誤 – Deepak

+1

你也有一個'|'在'awk'在同一行之前缺少。 – devnull

回答

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)) 

一個問題可能是,你是grepping爲dixit,不Dixit,從而爲new_count空值。我得到了一個不同的錯誤,但這可能是基於expr的實施。請注意,expr不再需要在shell中進行算術運算; $((...))應該在任何POSIX兼容的shell中可用。