케이스 구조가 포함된 코드 조각을 보았습니다.
while true;
do
case "$1" in
--prepare)
echo "prepare"
ENV_PREPARE
exit 0
;;
--sleep)
SLEEP_TIME=$2
shift 2
;;
--)
shift
break
;;
*)
echo "Internal error!"
exit 1
;;
esac
done
--)는 bash의 사례 구조에서 hrer를 의미합니까?
--)
shift
break
;;
답변1
배쉬에 특별한 의미는 없습니다.
해당 코드 조각의 작성자는 다른 문자 없이 두 개의 하이픈만 일치시키길 원했습니다. 문자 그대로 "--".
특히 GNU 유산의 많은 Unix 명령줄 도구를 사용하면 "--"를 구분 기호로 사용하여 "이 지점 이후에는 아무것도 옵션으로 처리할 수 없습니다. 이 명령줄의 나머지 부분은 인수(예: 파일에 대해 작동하는 명령의 파일 이름 목록)로 구성됩니다. 이렇게 하면 다음을 입력하여 "--help"라는 파일을 삭제할 수 있습니다.
rm -- --help
rm
"--help"가 도움말 문을 보기 위한 긴 옵션이라고 생각 하지 않게 됩니다 . (이것은 좋지 않은 예이지만 내 말을 이해하실 것이라고 생각합니다.)
내 생각엔 그 스크립트의 작성자가 그의 스크립트에서 "--"가 그렇게 작동하도록 만들고 싶었던 것 같습니다.