2011-12-07 157 views
1

我有簡單的腳本:爲什麼awk算術不起作用?

#!/bin/sh 
#NOTE - this script does not work! 
#column=${1:-1} 
column=1+1 
awk '{print $'$column'}' 

但運行

ls -la | ~/test/Column.sh 

當我收到始終

1 
1 
1 
1 

什麼問題?

+0

沒有在AWK沒有算術這裏,僅在外殼。而外殼不支持a = 1 + 1。 – bmargulies

回答

3

你的腳本是等價於:

awk '{print $1+1}' 

awk中嘗試添加一個到ls -al在您的示例輸出,這是文件類型和模式位的第一列。這不是一個數字,所以它被轉換爲0.將一個添加到零,並獲得您的輸出。
here:爲有效數字轉換成零無法解釋

字符串。

如果您希望shell計算的數量,請嘗試:

column=$(expr 1 + 1) 

甚至

column=$((1 + 1)) 
相關問題