最新在看一個shell資料時,按照教材,卻出現如下錯誤,不能運行
如下,簡單的腳本:
#!/bin/bash cat |while read line do echo $line done < <(data.txt|awk '{print $0}')
運行時,卻出現如下錯誤
[root@localhost shellcookbook]# sh while_test.sh while_test.sh: line 5: syntax error near unexpected token `<' while_test.sh: line 5: `done < <(data.txt|awk '{print $0}')'
然后在單行運行時,卻沒有錯誤
[root@localhost shellcookbook]# while read line;do echo $line;done < <(cat data.txt|awk '{print $1}') 1 2 3 4
在網上查看后,確認無腳步錯誤,無dos文件錯誤。還是沒有好的解決方法。通過多方求證。原來是bash 3.0后,shell中加入了新的符號"<<<" 可以獲取子任務
現將腳本更改如下,成功運行:
#!/bin/bash cat |while read line do echo $line done <<< `cat data.txt|awk '{print $0}'`
成功運行
[root@localhost shellcookbook]# sh while_test.sh 1 2 3 4