2014-02-07 79 views
2

在我的腳本中,我接收一個字符串,遍歷每個字符並將其傳遞給一個函數,該函數使用開關盒來檢查它是什麼字符並相應地執行。它工作正常,但它似乎無法匹配空白字符。我可以使用什麼符號?檢查一個給定的字符是否爲空白

注意:只有一個字符會被傳遞到這個函數中,所以我只需要弄清楚這個單個字符是否是一個空格字符。從代碼

片段

" ") 
     doSomething 
     ;; 
    "a") 
     doSomethingElse 
     ;; 
    "b") 
     doSomethingElse 
     ;; 
    "c") 
     doSomethingElse 
     ;; 

也試過

*\ *) 
     tap 388 1127 
     ;; 

謝謝!

+0

你的第一個示例測試一個空格,你秒的任何地方的空間(可能由其他字符包圍)的測試,取決於你想? – BroSlow

回答

9

在BASH中,您可以使用POSIX character classes來匹配空格與[[:space:]]

case $var in 
    [[:space:]]) 
     doSomething 
     ;; 
esac 

[[:space:]]將匹配任何空格字符。

測試字符類也可以雙括號內完成:

[[ $var == [[:space:]] ]] && doSomething 
+1

+1,值得注意的是,這將匹配所有的空格(製表符,換行符等)字符不僅僅是一個空格。 –

+0

確實,發佈已更新。 –

+0

這是不準確的,你正在做的只是測試一個'空白'字符。另外,你應該在case語句中引用'$ var'。 – BroSlow

相關問題