【问题标题】:compare two strings in bash比较bash中的两个字符串
【发布时间】:2015-12-07 18:43:52
【问题描述】:

我想比较两个字符串,然后再比较另外两个字符串。 所以如果 $version 不等于 5 并且 type 不等于 dbma 或者如果 $version 不等于 6 并且 $type 不等于 dbmy

我的语法不太正确。

if [[ "${version}" != "5" ]] &&  [[ "${type}" != "dbma" ]] || [[ "${version}" != "6" ]] &&  [[ "${type}" != "dbmy" ]]
then
   xyz
else
   abc
fi

有人可以帮忙吗?

【问题讨论】:

  • 你的问题和你的代码一样模棱两可。 shell 会从左到右解析这个,所以你可以有效地 if ((version is not 5 and type is not "dbma") or version is not 6) and type is not "dbmy" ...但你应该在你的问题来说明你的意思。我猜你实际上想要 (foo and bar) 或 (baz and quux)?

标签: string bash compare


【解决方案1】:

假设这就是你真正的意思......

if [[ ($version != 5 && $type != "dbma") || ($version != 6 && type != "dbmy") ]]

内置的[[ 允许在表达式中使用括号和逻辑运算符(而旧版[ 两者都没有,而新版本有-a-o 用于“and”和“or”,但没有括号)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-08
    • 2015-08-30
    • 2012-03-02
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多