
Estou escrevendo um script para ler a saída de um comando para as variáveis a e b. Este é o roteiro
#!/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"
e obtendo o erro de sintaxe como:
line 3: syntax error near unexpected token `<'
line 3: `read a b < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)'
Mas quando estou digitando o mesmo comando no console, ele funciona para mim sem nenhum problema.
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
Qualquer ajuda sobre isso é muito apreciada.
Responder1
sh
(que na maioria dos sistemas (derivados do Debian) está vinculado a dash
) não permitesubstituição de processo. Tente invocar por bash script.sh
. A mesma chamada de ./script.sh é executada com sha-bang
a qual é/bin/bash
em seu roteiro.
Responder2
Eu estava tentando invocar o script como sh file.sh e estava recebendo o erro. Mas quando invoquei o mesmo script que ./file.sh e bash file.sh ele está funcionando e dando o resultado desejado.