linux - BASH 变量与字符串的比较总是失败

标签 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 个不同的答案(这似乎是一个常见问题)——但我就是想不通!

非常感谢任何帮助。

最佳答案

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

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

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

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

相关文章:

c++ - 当内存限制接近时转储缓冲数据

linux - 在 Linux 中查找并替换多个复杂行

linux - 如何将所有段落从垂直方向重新排列为水平方向(彼此相邻)

linux - 内存监控 bash 脚本的 CPU 使用率相当高

php if/else 简写失败

Excel 公式如果 |和

ruby-on-rails - E : Unable to locate package heroku-toolbelt

bash - 使用 sudo 运行时我的 shell 脚本出了什么问题?

ruby - 这个 Ruby 代码和 shell 代码有什么区别?

java - If 语句检测字符串中的特定单词