My code below doesn't work:
stringZ=" " if [[ "$stringZ" == ^[[:blank:]][[:blank:]]*$ ]];then echo string is blank else echo string is not blank fi
string is not blank # wrong
How can I test this?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
An additional binary operator, =~, is available, with the same precedence as == and !=. When it is used, the string to the right of the operator is considered an extended regular expression and matched accordingly (as in regex(3)).
So the regular expression matching operator should be
if [[ "$stringZ" =~ ^[[:blank:]][[:blank:]]*$ ]];then echo string is blank else echo string is not blank fi
You can reduce the verbosity of the regular expression by using
+ quantifier (meaning previous entity 1 or more times):
if [[ "$stringZ" =~ ^[[:blank:]]+$ ]]; then