shell脚本中的双括号存在问题

我有一个执行的shell脚本。 在脚本中我有:

if [[ $variable == *something* ]]; then
   do something
fi

我的问题在于运行脚本返回“[[not found]”。

从阅读其他答案看来,并不是所有的shell都能识别双括号,但是,我不确定解决方案是什么,这个代码的等价物是什么?


听起来你的shell是POSIX sh ,它没有[[ builtin]。 可能的解决方案包括将其转换为适用于sh的表达式或将shebang行更改为#!/bin/bash 。 改变shebang通常是最好的解决方案。

如果你在Ubuntu上,你可能有一个POSIX sh ,他们使用短划线。


我知道只有一个括号,你是否只用一个括号来尝试它? 否则你可以使用test


POSIX标准解决方案:

if test echo "${variable}" | grep -q 'something' 
then
   # do something
fi

那将永远工作:)

链接地址: http://www.djcxy.com/p/97045.html

上一篇: An issue with double brackets in shell scripting

下一篇: Bash scripting: Find minimum value in a script