为什么选择bash+;awk脚本产生错误?

为什么选择bash+;awk脚本产生错误?,bash,awk,Bash,Awk,我有一个简单的脚本: #!/bin/sh column=$1 awk '{print $'$column'}' 当我跑步时: ls -la | ./Column.sh 我收到: awk: {print $} awk: ^ syntax error 为什么??一切似乎都是正确的。您没有将参数传递给Column.sh,因此$1是空字符串。也许你的意思是: ls -a | while read name; do ./Column.sh $name; done ls-a |读取名称

我有一个简单的脚本:

#!/bin/sh
column=$1
awk '{print $'$column'}'
当我跑步时:

ls -la | ./Column.sh
我收到:

awk: {print $}
awk:         ^ syntax error

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

您没有将参数传递给Column.sh,因此$1是空字符串。也许你的意思是:

ls -a | while read name; do ./Column.sh $name; done ls-a |读取名称时;do./Column.sh$name;完成
您希望脚本做什么还不是很清楚

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

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

ls -la | ./Column.sh 1

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

awk具有将shell变量传递到awk的功能,因此您不必使用awk脚本玩报价游戏:

#!/bin/sh
awk -v "column=${1:-1}" '{print $column}'
如果没有给出参数,我使用shell的“default value”机制提供默认值1