为什么bash + awk脚本会产生错误?

时间:2011-12-09 12:26:13

标签: bash awk

我的脚本很简单:

#!/bin/sh
column=$1
awk '{print $'$column'}'

当我跑步时:

ls -la | ./Column.sh

我收到:

awk: {print $}
awk:         ^ syntax error

为什么呢?一切似乎都是正确的。

3 个答案:

答案 0 :(得分:2)

您希望脚本执行的操作不是很清楚。

此错误的原因是您没有向脚本传递任何参数。结果$1为空。

您需要传递要打印的列号:

ls -la | ./Column.sh 1

将打印第1列中的权限列。

答案 1 :(得分:1)

您没有将参数传递给Column.sh,因此$ 1是空字符串。也许你打算这样做:

ls -a | while read name; do ./Column.sh $name; done

答案 2 :(得分:0)

awk有一个将shell变量传递给awk的工具,所以你不必用你的awk脚本来玩引用游戏:

#!/bin/sh
awk -v "column=${1:-1}" '{print $column}'

如果没有给出参数,我使用shell的“默认值”机制来提供默认值1。