%22%EB%A5%BC%20%EC%B0%BE%EB%8A%94%20%EB%8F%99%EC%95%88%20%EC%98%88%EA%B8%B0%EC%B9%98%20%EC%95%8A%EC%9D%80%20EOF%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내 스크립트의 매우 단순화된 버전입니다.
#!/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