我想通过以下方式检测空字符串和白色字符串
#!/etc/bash
test_word=' ' # test_word includes only one space
if [[ ${test_word} =~ ^\s*$ ]]; then
echo "detect"
else
echo "not detect"
fi
结果是
not detect
它不起作用。 请让我知道如何检测它。 或者请让我知道一些选项,例如
if [[ -z ${var} ]]
最佳答案
\s
与 BASH 中的空格不匹配(它只匹配单个字母 s
),您可以使用 POSIX 属性 [[:blank: ]]
匹配空格或制表符:
if [[ ${test_word} =~ ^[[:blank:]]*$ ]]; then
echo "detect"
else
echo "not detect"
fi
这是一种非正则表达式的检测方法:
if [[ -z ${test_word//[[:blank:]]/} ]]; then
echo "detect"
else
echo "not detect"
fi
${test_word//[[:blank:]]/}
将删除 $test_word
中的所有空格,而 -z
将删除检查给定字符串的长度是否为零。
这是另一种检测相同内容的extglob
方法(感谢@gniourf_gniourf):
if [[ ${test_word} == *([[:blank:]]) ]]; then
echo "detect"
else
echo "not detect"
fi
关于bash - 如何检测 bash 中可能包含空格的空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39545311/