예상치 못한 토큰 `

예상치 못한 토큰 `

변수 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와 동일한 스크립트를 호출하면 작동하고 원하는 결과가 제공됩니다.

관련 정보