我有簡單的腳本:爲什麼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
什麼問題?
我有簡單的腳本:爲什麼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
什麼問題?
你的腳本是等價於:
awk '{print $1+1}'
awk中嘗試添加一個到ls -al
在您的示例輸出,這是文件類型和模式位的第一列。這不是一個數字,所以它被轉換爲0.將一個添加到零,並獲得您的輸出。
見here:爲有效數字轉換成零無法解釋
字符串。
如果您希望shell計算的數量,請嘗試:
column=$(expr 1 + 1)
甚至
column=$((1 + 1))
如果這是純粹的Bourne shell,而不是:
column=1+1
試試這個:
column=`expr 1+1`
如果是bash中,它應該是:
column=$[1+1]
在這裏看到:http://linuxreviews.org/beginner/bash_GNU_Bourne-Again_SHell_Reference/#toc12
沒有在AWK沒有算術這裏,僅在外殼。而外殼不支持a = 1 + 1。 – bmargulies