检查BASH变量中是否找到字符的最简单方法是什么?

时间:2014-01-11 04:29:39

标签: bash if-statement find

我需要检查变量是否包含特定字符,以便在BASH中使用if条件,例如:

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

如果$numbers是“这些是一些数字1232”,则返回“未找到。”,但如果在该行的任何位置找到“①”,则返回“找到”。

我一直在使用$numbers | grep -c ①,然后检查输出是否大于“0”,但似乎必须有一个更简单的解决方案。

3 个答案:

答案 0 :(得分:3)

只要它是bash并且不需要posix:

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

答案 1 :(得分:3)

比较的右侧可以是一种模式:

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

答案 2 :(得分:2)

对于posix解决方案,请使用case语句代替if语句:

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

此解决方案将在dash下工作,这是受Debian影响的发行版下脚本的默认shell(/bin/sh)。