![공백(탭 또는 "")만 포함된 문자열을 테스트하시겠습니까? [복사]](https://linux55.com/image/30250/%EA%B3%B5%EB%B0%B1(%ED%83%AD%20%EB%98%90%EB%8A%94%20%22%22)%EB%A7%8C%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
아래 코드가 작동하지 않습니다.
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