
Я пишу скрипт для чтения вывода команды в переменные 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, он работал и давал желаемый результат.