2014-01-11 47 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)。的比较

相关问题