저는 $message에 공백이 아닌 문자가 있는지 감지하기 위해 bash 스크립트를 작성하고 대소문자 논리를 사용하고 있지만 개행 문자가 아닌 문자도 감지하고 싶습니다. 때로는 내 스크립트의 $message 변수가 개행과 같고 때로는 true를 반환하기도 합니다.
공백이 아닌 조건과 개행이 아닌 조건을 결합하는 방법은 무엇입니까?
이와 같이?[!\ !\N]
이것이 내가 지금까지 가지고 있는 것입니다:
7 case $message in
8 *[!\ ]*) # contains non-space
9 messagex='``` '"$message"' ```' ;;
10 *) # contains nothing or only spaces
11 messagex=
12 esac
답변1
case $message in
(*[!'
']*) : contains characters other space and newline
esac
또는:
case $message in
(*[!"$(printf '\n ')"]*) : contains characters other space and newline
esac
또는 ksh93 스타일의 $'...'
특수 따옴표를 사용하십시오( 에는 없음 sh
).
case $message in
(*[!$' \n']*) : contains characters other space and newline
esac
[:space:]
또는 POSIX 문자 클래스를 사용하여 TAB, SPC, CR, NL 등 모든 공백을 일치시킬 수 있습니다.
case $message in
(*[![:space:]]*) : contains non-whitespace characters
esac