我有一个这样的表达式:
if [[ $s == *Mar* ]]; then "match"; else "not"; fi;
如何将其值赋给变量? 命令替换语法不起作用,因为bash尝试评估表达式的结果:
x=$(if [[ $s == *Mar* ]]; then "match"; else "not"; fi;)
给出错误:
-bash: match: command not found
所以,基本上我想告诉bash评估表达式,但不要将输出视为命令。 我怎么做?
答案 0 :(得分:4)
if [[ $s == Mar ]]; then "match"; else "not"; fi
不是表达式;它是命令。您可以通过插入适当的match
命令将其转换为输出not
或echo
的命令,然后使用反引号或$()
捕获输出。
但那是毫无意义的间接。为什么不简单
if [[ $s == Mar ]]; then
x="match"
else
x="not"
fi