【问题标题】:How to compare two value in shell?如何比较shell中的两个值?
【发布时间】:2015-02-20 18:35:54
【问题描述】:
currentDNS=$(networksetup -getdnsservers Wi-Fi)
GOOGLE="8.8.8.8 8.8.4.4"

echo '+'$currentDNS'+'
echo '+'$GOOGLE'+'

似乎 GOOGLE == currentDNS 。

if [ "$currentDNS" = "$GOOGLE" ];then
   echo OKK
fi

但它返回错误

【问题讨论】:

  • 也许 networksetup 返回一个制表符分隔的字符串。在你的回声中加上双引号,并可能将它们传递给cat -tve
  • 尝试echo "+$currentDNS+" 看看参数中真正存储了什么。不加引号,任何空格都将被删除,生成的单词将以echo 打印,并用一个空格分隔。

标签: macos shell terminal zsh


【解决方案1】:

尝试使用首选 bash 测试 [[ ]] 进行此操作:

[[ $currentDNS == $GOOGLE  ]] && echo ok || echo >&2 "Not OK"

要弄清楚

的输出到底如何
networksetup -getdnsservers Wi-Fi

试试这个:

currentDNS="$(networksetup -getdnsservers Wi-Fi)"
echo "[$currentDNS]"

也许

od -c <<< "$currentDNS"

看看它是否是你所期望的。

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多