Bash 스크립트에서 "interactive-comments" 옵션 사용

Bash 스크립트에서 "interactive-comments" 옵션 사용

비대화형 bash 스크립트에서 주석을 끌 수 있는지 궁금합니다.

"interactive_comments" 또는 "interactive-comments"를 사용하거나 켜거나 끄는 것은 비대화형 쉘에 영향을 주지 않습니다 set.shopt

왜 이런 일이 발생합니까? 내가 놓친 게 무엇입니까?

답변1

나는 이 (대화형 주석) 옵션을 사용하여 대화형 쉘을 얻고 싶습니다.

추측하는 대신 문서를 읽어보세요.

설정된 경우 다음으로 시작하는 단어를 허용하면 #해당 단어와 줄의 나머지 모든 문자가 대화형 쉘에서 무시됩니다.

이 옵션을 켜도 셸이 대화형으로 만들어지지는 않습니다. 쉘이 대화형인 경우 주석을 활성화할지 여부를 제어합니다 #. 쉘이 대화형이 아닌 경우에는 아무런 효과가 없습니다.

반품,

이 옵션은 기본적으로 활성화되어 있습니다.

따라서 켜도 아무런 효과가 없습니다.

그리고 녹음하는 방법은 shopt -s interactive_comments켜고 shopt -u interactive_comments끄는 방법이 있습니다. 그러나 set -o interactive-commentsand set +o interactive-comments는 (문서화되지 않은) 대안입니다.


대화형 쉘로 시작한 경우에만 대화형 쉘을 얻을 수 있습니다. 비대화형 쉘을 대화형으로 만들 수 있는 방법은 없습니다. 쉘이 대화형인지 여부는 명령줄과 터미널에서 실행되는지 여부에 따라 다릅니다.

  • options 를 사용하면 -ibash가 대화형으로 시작됩니다.
  • 스크립트 파일 이름( 또는 )을 -i사용하거나 사용 하지 않고 bash는 비대화형으로 시작됩니다.-cbash -c 'some command'bash path/to/script
  • -i또는 스크립트 파일 이름이 없으면 -cbash는 표준 입력과 표준 오류가 모두 터미널인 경우 대화형으로 시작되고, 그렇지 않으면 비대화형으로 시작됩니다.

interactive_comments스크립트 파일과 스크립트 내의 설명은 옵션 상태에 관계없이 -c항상 인식됩니다 . #주석이 단어 시작 부분에서 시작되지 않는 유일한 경우는 쉘이 대화형이고 이 interactive_comments옵션이 꺼져 있으며 표준 입력에서 읽는 경우입니다.

이 시도 script.sh:

# a comment
shopt interactive_comments
set +o interactive-comments
shopt interactive_comments
# another comment

실행 기록:

bash-5.0$ # a comment
bash-5.0$ shopt interactive_comments
interactive_comments    on
bash-5.0$ set +o interactive-comments
bash-5.0$ shopt interactive_comments
interactive_comments    off
bash-5.0$ # another comment
bash: #: command not found
bash-5.0$ exit

관련 정보