2016-09-17 44 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 
相關問題