Я пишу скрипт для чтения вывода команды переменной a и b. Это сценарий
#!/bin/bash read ab < <(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 ab < <(awk /Application Server/ && !seen[$7]++{echo "%s ", $7} /tmp/ServerState)'
Но когда я набираю ту же команду в консоли, она работает для меня без каких-либо проблем.
app@user:/tmp> read ab < <(awk '/Application Server/ && !seen[$7]++{printf "%s ", $7}' /tmp/ServerState) app@user:/tmp> echo $a FAILED app@user:/tmp> echo $b STARTED
Любая помощь в этом действительно оценена.
sh
(который в большинстве (связанных с Debian) системах связан с dash
) не позволяет замещать процесс . Попробуйте вызвать bash script.sh
. Тот же вызов ./script.sh выполняется с помощью sha-bang
который является /bin/bash
в вашем скрипте.
Я пытался вызвать скрипт как sh file.sh и получал ошибку. Но когда я вызывал тот же скрипт, что и ./file.sh и bash file.sh, он работает и дает желаемый результат.