2016-09-17 90 views
2

我想通过如何检测可能包含白色空格的空字符串?

#!/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} ]] 

回答

3

\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将检查给定的字符串是否为零长度。

这是另一个检测相同(感谢@gniourf_gniourf)extglob方式:

if [[ ${test_word} == *([[:blank:]]) ]]; then 
    echo "detect" 
else 
    echo "not detect" 
fi 
相关问题