shell脚本上的Grep和正则表达式不同的行为不能正常工作

时间:2013-01-07 15:45:40

标签: regex grep sh

我正在研究一个shell脚本,我要检查字符串B中是否包含字符串A.

所以我马上写出来(以“钥匙”为例)

if [ `echo "$KEY" | grep "\$"` ]

但出于某种原因,在我的shell脚本上输出

echo "$KEY" | grep "\$"

返回“value”

在zshrc上测试相同的命令后,得到了不同的结果(没有预期的结果)

任何人都知道它可能来自哪里?

编辑:在重新编写我的脚本后,我将“”引号更改为''并获得了正确的结果

echo "$KEY" | grep '\$'

然而,我的测试仍在写出来

[ if `echo "$KEY" | grep '\$'` ]

1 个答案:

答案 0 :(得分:3)

更惯用和直接的方法是使用shell的case语句。语法略显怪异,仍然有一些元字符可以处理,但不是像grep一样的完整正则表集。

case '$key' in
  *\$* ) echo contained ;;
  * ) echo not ;;
esac