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

任何帮助深表感谢。

最佳答案

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

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

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

关于linux - BASH变量与字符串的比较总是失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36652255/

10-13 07:20