为什么选择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