我有簡單的腳本:爲什麼bash + awk腳本會產生錯誤?
#!/bin/sh
column=$1
awk '{print $'$column'}'
當我運行:
ls -la | ./Column.sh
我收到:
awk: {print $}
awk: ^syntax error
爲什麼?一切似乎都正確。
我有簡單的腳本:爲什麼bash + awk腳本會產生錯誤?
#!/bin/sh
column=$1
awk '{print $'$column'}'
當我運行:
ls -la | ./Column.sh
我收到:
awk: {print $}
awk: ^syntax error
爲什麼?一切似乎都正確。
這是不是很清楚你想要腳本做什麼。
此錯誤的原因是您沒有將任何參數傳遞給腳本。結果$1
是空的。
您需要將您想要打印的列數:
ls -la | ./Column.sh 1
將打印權限列是在第1列
您沒有將參數傳遞給Column.sh,因此$ 1是空字符串。也許你的意思是:
ls -a | while read name; do ./Column.sh $name; done
awk有一個設備通過shell變量用到這樣的awk你不必與你的awk腳本玩遊戲報價:
#!/bin/sh
awk -v "column=${1:-1}" '{print $column}'
我使用shell的「默認值」的機制,如果未指定參數提供的默認值1。