在浏览项目配置文件时,我遇到了Shell脚本,但我看不懂。 脚本是这样的-
#list all possible environments
env="local,dev,qa";
# check valid environment.
if [[ ",$env," != *",$ENV,"* ]] ; then
echo "ENVIRONMENT is $ENV but must be set to local, dev or qa as per the environment.";
exit 1;
fi
这里是如何评估if条件的,它是什么意思?
在运行时也显示错误:[[:找不到
答案 0 :(得分:2)
bash
中的条件语法开头为:
if
命令
[[
实际上是一个命令(还有[
和((
)。
$ type [[
[[ is a shell keyword
[[
内部的条件测试很奇怪:
",$env," != *",$ENV,"*
$env
和$ENV
分别代表变量env
和ENV
的值。右侧的*
表示“零个或多个字符”。 !=
表示“不等于”,尽管此处表示“不匹配”。
变量周围的引号用于防止值中的任何特殊字符(例如*)被shell扩展。逗号只是文字字符。
为什么程序员不只是说"$env" != "$ENV"
,我不确定,但是如果它没有坏,就不要修复它。
ENV
是一个特殊变量,用于在使用sh
而不是bash
调用shell时确定启动文件的名称。含义是在此脚本中它被滥用。
您为什么得到error : [[: not found
?请确切显示您如何运行此脚本,因为这意味着您没有使用bash
或sh
。例如,如果您使用csh
(C壳),则会得到:
% [[
[[: Command not found.
与您显示的错误消息相似,但不完全相同。