簡體   English   中英

如何檢測bash中可能包含空格的空字符串?

[英]How to detect empty string which may include white spaces in bash?

我想通過檢測空字符串和白字符串

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM