BASH变量到字符串比较总是失败

时间:2016-04-15 16:21:21

标签: linux bash if-statement scripting

我已经搜索,搜索和搜索了......但是我无法弄清楚为什么这个简单的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个不同的答案(这似乎是一个常见的问题) - 但我无法弄明白!

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:1)

只需更改此行:

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

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