Shell如何在变量中分配字符串测试的结果



我有一个shell脚本:

#!/bin/bash
server=$1
modules=$2
is_selected= if [[ $modules== *"myModule"* ]]; then true else false fi

我希望如果条件$modules== *"myModule"*得到验证,

则变量被选择得到true,否则得到false

如何在一行中进行调整

您需要命令替换,并且您的命令必须输出字符串truefalse

is_selected=$( if [[ $modules == *"myModule"*; then echo true; else echo false; fi)

或者将赋值放在if语句中:

if [[ $modules == *myModule* ]]; then is_selected=true; else is_selected=false; fi

其优点是不需要用于命令替换的子shell(并且可能需要新进程(。

或者使用注释中的建议,将变量初始化为false,如果匹配成功,则将其设置为true。

is_selected=false; [[ $modules == *myModule* ]] && is_selected=true

运行命令替换并返回所需结果:

is_selected=$(if [[ "$modules" == *"myModule"* ]]; then echo true; else echo false; fi)

最新更新