2014-12-22 6 views
1
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 

но возвращают ложные

+2

Возможно, networksetup возвращает строку с разделителями табуляции. Поместите двойные кавычки в свое эхо и, возможно, подключите их к 'cat -tve' –

+0

Попробуйте' echo '+ $ currentDNS + "', чтобы увидеть, что действительно хранится в параметре. Без кавычек любые пробелы будут удалены, и полученные слова будут напечатаны 'echo', разделенными одним пробелом. – chepner

ответ

2

Попробуйте сделать это с предпочитаемым тестом Баша [[ ]]:

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

Чтобы выяснить, как это exactely выхода

networksetup -getdnsservers Wi-Fi 

попробовать это :

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

и, возможно,

od -c <<< "$currentDNS" 

и посмотреть, если это то, что вы ожидаете.

Смежные вопросы