2

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

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

我的问题是运行脚本返回“[[未找到”。

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

4

3 回答 3

3

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

sh如果你在 Ubuntu 上,你可能有一个 POSIX ,他们使用破折号。

于 2012-05-22T13:51:39.177 回答
1

我只知道一个括号,你试过每个只用一个括号吗?否则你可以test改用。

于 2012-05-22T13:52:47.240 回答
1

POSIX 标准解决方案:

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

这将始终有效:)

于 2012-05-22T14:40:58.023 回答