
변수 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
(대부분의 (데비안 파생) 시스템은 에 연결되어 있음 dash
)은 허용하지 않습니다프로세스 대체. 으로 호출해 보십시오 bash script.sh
. ./script.sh에 의한 동일한 호출은 sha-bang
다음 과 같이 실행됩니다./bin/bash
귀하의 스크립트에서.
답변2
sh file.sh로 스크립트를 호출하려고 했는데 오류가 발생했습니다. 그러나 ./file.sh 및 bash file.sh와 동일한 스크립트를 호출하면 작동하고 원하는 결과가 제공됩니다.