Bash 4: 일치하는 ")"를 찾는 동안 예기치 않은 EOF가 발생했습니다.

Bash 4: 일치하는 ")"를 찾는 동안 예기치 않은 EOF가 발생했습니다.

내 스크립트의 매우 단순화된 버전입니다.

#!/usr/bin/env bash
example="$(bash -rs <<'BASH' -- 'This has been executed in restricted shell'
  echo "$1"
BASH
)"
echo "$example"

Bash 버전 5.1.4를 사용하는 시스템에서는 문제 없이 실행됩니다. 그러나 bash 버전 4.0.44를 사용하는 다른 시스템에서는 오류가 발생합니다.

line 2: unexpected EOF while looking for matching `)'

스크립트를 다음으로 변경하면

#!/usr/bin/env bash
example="$(bash -rs <<'BASH'
  echo 'This has been executed in restricted shell'
BASH
)"
echo "$example"

또는

#!/usr/bin/env bash
bash -rs <<'BASH' -- 'This has been executed in restricted shell'
  echo "$1"
BASH

bash 버전 4 시스템에서도 작동합니다.

그 이유가 무엇인지 아는 사람이 있습니까?

답변1

글쎄요, 그건 실수입니다. 구체적으로 어느 것이 문제인가.

아마도 이것은 아마도:

제이. 명령 대체 내에서 셸이 문서 끝 구분 기호를 인식하지 못하는 버그를 수정했습니다.

그러나 이것은 단지 추측일 뿐이다.

Bash 버그 메일링 리스트에 대한 이전 보고서:https://lists.gnu.org/archive/html/bug-bash/2010-07/msg00052.html

관련 정보