2014-01-11 52 views
2

我需要檢查,如果一個變量包含特定字符,用在一個if條件的BASH,如:什麼是最簡單的方法來檢查是否在BASH中的變量中找到一個字符?

if [ "①" is in "$numbers" ] 
then 
    echo "Found." 
else 
    echo "Not found." 
fi 

如果$numbers是「這些都是一些數字1232」,則返回「未找到。 「,但如果在該行的任何位置找到」①「,則返回」找到「。

我一直在使用$numbers | grep -c ①,然後檢查輸出是否大於「0」,但似乎必須有一個更簡單的解決方案。

回答

3

右手邊可以是一個圖案:

if [[ $numbers = *①* ]] ; then 
3

只要它是bash和不需要符合POSIX:

if [[ "$numbers" =~ ① ]]; then 
    echo "Found" 
fi 
2

對於POSIX的解決方案,以代替if語句的使用case聲明:

numbers="①" 
case "$numbers" in 
    *①*) echo "Found it." ;; 
    *) echo "Not here." ;; 
esac 

該解決方案將在dash下工作,這是Debian影響分佈下腳本的默認shell(/bin/sh)。的比較

相關問題