为什么awk算术不起作用?

时间:2011-12-07 13:50:53

标签: awk arithmetic-expressions

我的脚本很简单:

#!/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

出了什么问题?

2 个答案:

答案 0 :(得分:3)

您的脚本相当于:

awk '{print $1+1}'

Awk尝试在示例中的ls -al输出的第一列添加一个,即文件类型和模式位。这不是一个数字,所以它被转换为0.将一个加零,然后得到你的输出 见here

  

无法解释为有效数字的字符串会转换为零。

如果您希望shell计算数字,请尝试:

column=$(expr 1 + 1)

甚至

column=$((1 + 1))

答案 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