我的脚本很简单:
#!/bin/sh
column=$1
awk '{print $'$column'}'
当我跑步时:
ls -la | ./Column.sh
我收到:
awk: {print $}
awk: ^ syntax error
为什么呢?一切似乎都是正确的。
答案 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。