아래 코드가 작동하지 않습니다.
stringZ=" "
if [[ "$stringZ" == ^[[:blank:]][[:blank:]]*$ ]];then
echo string is blank
else
echo string is not blank
fi
결과:
string is not blank # wrong
이것을 어떻게 테스트할 수 있나요?
답변1
특정 코드가 필요 하지 않습니다 bash
.
case $string in
(*[![:blank:]]*) echo "string is not blank";;
("") echo "string is empty";;
(*) echo "string is blank"
esac
답변2
에서 man bash
:
== 및 !=와 우선순위가 동일한 추가 이항 연산자 =~를 사용할 수도 있습니다. 사용되면 연산자 오른쪽에 있는 문자열은 확장 정규식으로 처리되고 그에 따라 일치됩니다(regex(3)에서와 같이).
따라서 정규식 일치 연산자는 다음과 같아야 합니다 =~
.
if [[ "$stringZ" =~ ^[[:blank:]][[:blank:]]*$ ]];then
echo string is blank
else
echo string is not blank
fi
+
정규식의 장황함을 줄이기 위해 수량자(이전 엔터티를 1회 이상 나타냄)를 사용할 수 있습니다.
if [[ "$stringZ" =~ ^[[:blank:]]+$ ]]; then