bash の正規表現構文を使用できます。
二重角括弧 [[ ... ]]
を使用する必要があります 、(一般的に、より用途が広い)。
変数を引用符で囲む必要はありません。正規表現自体はしてはいけません 引用される
for str in " " "abc " "" ;do
if [[ $str =~ ^\ +$ ]] ;then
echo -e "Has length, and contain only whitespace \"$str\""
else
echo -e "Is either null or contain non-whitespace \"$str\" "
fi
done
出力
Has length, and contain only whitespace " "
Is either null or contain non-whitespace "abc "
Is either null or contain non-whitespace ""
これらの回答の多くは、本来よりもはるかに複雑であるか、はるかに読みにくいものです。
[[ $string = *[[:space:]]* ]] && echo "String contains whitespace"
[[ $string = *[![:space:]]* ]] && echo "String contains non-whitespace"