질문 : Bash 스크립트에서 사용자에게 확인을 요청하는 방법은 무엇입니까?
빨리 "확실합니까?" 잠재적으로 위험한 bash 스크립트의 맨 위에 확인 메시지가 표시됩니다.이 작업을 수행하는 가장 쉽고 / 가장 좋은 방법은 무엇입니까?
답변
read -p "Are you sure? " -n 1 -r
echo # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
# do dangerous stuff
fi
levislevis85 의 제안 (감사합니다!)을 통합 -n
옵션을
추가하여 Enter 키
를 누를 필요없이 한 문자를 허용 read
. 이들 중 하나 또는 둘 다를 사용할 수 있습니다.
또한 부정 형식은 다음과 같습니다.
read -p "Are you sure? " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 # handle exits from shell or function but don't exit interactive shell
fi
그러나 Erich가 지적한 바와 같이 잘못된 쉘에서 실행되는 스크립트로 인한 구문 오류와 같은 일부 상황에서는 부정 형식으로 인해 스크립트가 "위험한 작업"을 계속할 수 있습니다. 실패 모드는 가장 안전한 결과를 선호한다 그래서 첫 번째, 비 무효 if
사용되어야한다.
설명:
read
명령은 프롬프트 ( -p "prompt"
)를 출력 한 다음 한 문자 ( -n 1
)를 허용하고 문자 그대로 백 슬래시를 허용합니다 ( -r
) (그렇지 않으면 read
는 백 슬래시를 이스케이프로 간주하고 두 번째 문자를 기다립니다). 다음과 같은 이름을 제공하지 않으면 결과를 저장할 read
의 기본 변수 $REPLY
read -p "my prompt" -n 1 -r my_var
if
문은 정규식을 사용하여 $REPLY
의 문자가 대문자 또는 소문자 "Y"와 일치 =~
여기에 사용 된 정규식은 " [Yy]
)과 끝 ( $
)의 문자 목록 중 하나로 만 구성된 ^
앵커 ( ^
및 $
)는 긴 문자열 일치를 방지합니다. read
명령에 설정된 한 문자 제한을 강화하는 데 도움이됩니다.
부정 형식은 논리 "not"연산자 ( !
)를 사용하여 "Y"또는 "y"가 아닌 모든 문자와 일치 ( =~
이것을 표현하는 다른 방법은 가독성이 떨어지고이 경우 내 의견으로는 의도를 명확하게 표현하지 않습니다. 그러나 이것은 다음과 같습니다. if [[ $REPLY =~ ^[^Yy]$ ]]
출처 : https://stackoverflow.com/questions/1885525/how-do-i-prompt-a-user-for-confirmation-in-bash-script
'개발관련 > other' 카테고리의 다른 글
C# JavaScriptSerializer-Enum 형을 문자열로 JSON 직렬화 하는 방법 (0) | 2021.12.14 |
---|---|
Error - Unable to access the IIS metabase (0) | 2021.12.14 |
django OneToOneField와 ForeignKey의 차이점 (0) | 2021.12.11 |
Swift에서 배열을 연결하거나 병합하는 방법 (0) | 2021.12.11 |
OpenSSL을 사용하여 자체 서명 된 SSL 인증서를 생성하는 방법 (0) | 2021.12.11 |