내 스크립트의 매우 단순화된 버전입니다.
#!/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