【发布时间】:2019-06-19 02:44:44
【问题描述】:
我是 bash 脚本的新手,我希望有 if 条件阶梯
我正在读取一个字符串,我希望根据该字符串处理正确的 if 条件。
逻辑如下-
如果字符串包含子字符串-deploy,则只允许它进入if条件阶梯。
如果字符串同时包含-functions 和-layer 子字符串,那么只需要调用我的第一个 if 条件块,
elsif 检查-functions 子字符串
elsif 检查-layer 子字符串
到目前为止,我已经想出了以下代码-
commitMessage='[STABLE] -deploy -functions [one,two] -layer some commit message'
if [[ ($commitMessage == *"deploy"* ) && ($commitMessage == *"functions"*) || ($commitMessage == *"layer"*) ]] ; then
if [[ ($commitMessage == *"functions"*) && ($commitMessage == *"layer"*) ]] ; then
echo 'functions and layer'
fi
elsif [[ $commitMessage == *"functions"* ]] ; then
echo 'functions only'
fi
elsif [[ $commitMessage == *"layer"* ]] ; then
echo 'layer only'
fi
fi
我收到 elsif 语法错误 -
syntax error near unexpected token `elif'
我指的是这个,但不明白我做错了什么 -
Bash IF : multiple conditions
【问题讨论】:
-
错误显示
elif,但您问题中的代码使用elsif(带有s)。您是否始终使用elif?此外,shellcheck.net 可能会指出问题所在。 -
假设您的原始代码显示
elif(如您的错误消息中所示),那么主要错误是您在elifs 之前的fis。只需删除它们。
标签: bash