0

我目前正在编写一个 shell 脚本,我必须检查字符串 B 中是否包含字符串 A。

所以我立即写了出来(以“key”为例)

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

但是由于某种原因,在我的 shell 脚本中,输出

echo "$KEY" | grep "\$"

返回“价值”

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

有谁知道它可能来自哪里?

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

echo "$KEY" | grep '\$'

但是我的测试仍然通过写出来

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

1 回答 1

3

更惯用和直接的方法是使用 shell 的case语句。语法有点怪异,还有一些元字符需要处理,但不是像 with 那样的完整正则表达式集grep

case '$key' in
  *\$* ) echo contained ;;
  * ) echo not ;;
esac
于 2013-01-07T16:21:18.130 回答