【问题标题】:BASH Variable to string comparison always failsBASH 变量到字符串的比较总是失败
【发布时间】:2016-08-07 17:28:28
【问题描述】:

我搜索了,搜索了,搜索了......但我就是不知道为什么这个简单的 BASH 函数会失败。

代码:

# Function to quickly disable or enable proxy server, system wide
    proxee() {
        MODE=$(gsettings get org.gnome.system.proxy mode)
        echo $MODE

        if [ "$MODE" = "manual" ]
        then
            gsettings set org.gnome.system.proxy mode 'none'
            echo "Proxy Disabled"

        elif [ "$MODE" = "none" ]
        then
            gsettings set org.gnome.system.proxy mode 'manual'
            echo "Proxy Enabled"
        else
           echo "FAIL"
        fi
    }

每次我尝试运行它时,我都会得到以下输出:

'none'
FAIL

我实际上只是想将我声明的变量与字符串文字进行比较。

我对 bash 脚本很陌生,我已经从 Stack Overflow 阅读了超过 15 个不同的答案(这似乎是一个常见问题) - 但我就是想不通!

非常感谢任何帮助。

【问题讨论】:

    标签: linux bash if-statement scripting


    【解决方案1】:

    命令gsettings get org.gnome.system.proxy mode 返回'none',包括引号 (')。

    因此您必须将它们包括在比较中:

    ...
    elif [ "$MODE" = "'none'" ]
    then
    ...
    

    【讨论】:

    • 哇。最简单的事情......我是个白痴。谢谢。
    【解决方案2】:

    只需更改这一行:

    elif [ "$MODE" = "'none'" ]
    

    返回模式的字符串是'none'不是none 享受

    【讨论】:

    • 感谢 Varis。赞成你的答案,不得不把它给 bmk 只是因为他稍微快一点。干杯
    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2019-03-02
    • 1970-01-01
    • 2011-04-13
    • 2018-03-17
    • 2016-07-05
    相关资源
    最近更新 更多