
我正在編寫一個腳本來讀取變數 a 和 b 的命令的輸出。這是腳本
#!/bin/bash
read a b < <(awk '/Application Server/ && !seen[$7]++{printf "%s ", $7}' /tmp/ServerState)
echo "The value of a is $a"
echo "The value of b is $b"
並得到語法錯誤為:
line 3: syntax error near unexpected token `<'
line 3: `read a b < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)'
但是當我在控制台中輸入相同的命令時,它對我來說沒有任何問題。
app@user:/tmp> read a b < <(awk '/Application Server/ && !seen[$7]++{printf "%s ", $7}' /tmp/ServerState)
app@user:/tmp> echo $a
FAILED
app@user:/tmp> echo $b
STARTED
非常感謝對此的任何幫助。
答案1
sh
(在大多數(Debian 衍生的)系統中連結到dash
)不允許流程替代。嘗試透過 調用bash script.sh
。 ./script.sh 執行的相同呼叫sha-bang
是/bin/bash
在你的腳本中。
答案2
我試圖將腳本呼叫為 sh file.sh 並收到錯誤。但是當我呼叫與 ./file.sh 和 bash file.sh 相同的腳本時,它正在工作並給出所需的結果。