
Estoy escribiendo un script para leer el resultado de un comando para las variables a y b. Este es el guión
#!/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"
y obteniendo el error de sintaxis como:
line 3: syntax error near unexpected token `<'
line 3: `read a b < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)'
Pero cuando escribo el mismo comando en la consola, funciona sin ningún 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
Cualquier ayuda con esto es realmente apreciada.
Respuesta1
sh
(que en la mayoría de los sistemas (derivados de Debian) está vinculado a dash
) no permitesustitución de procesos. Intente invocar mediante bash script.sh
. Se ejecuta la misma llamada mediante ./script.sh con sha-bang
la cual es/bin/bash
en tu guión.
Respuesta2
Estaba intentando invocar el script como sh file.sh y recibía el error. Pero cuando invoqué el mismo script que ./file.sh y bash file.sh, funciona y da el resultado deseado.