我的脚本很简单:
#!/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 :(得分: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