【问题标题】:bash string comparisonsbash 字符串比较
【发布时间】:2012-03-02 11:21:51
【问题描述】:

我在 bash 中遇到字符串比较问题: 以下示例告诉我正在比较的两个字符串是不同的。他们不是。

REMOTE=`grep remote /etc/hosts|cut -f1| tr -d ' '`   
IP1=`/opt/local/bin/lynx -accept_all_cookies -dump
http://whatismyip.com | grep "Your IP Address Is"| cut -d" "  -f8 |  
tr -d ' '`    
if [ "$IP1"<>"$REMOTE" ]   
then    
echo "IP1 -ne REMOTE"   
echo "=>"$IP1"<="   
echo "=>"$REMOTE"<="

sudo cp /etc/hosts /etc/hosts.bkp 
sudo gsed -i 's/$IP/$REMOTE/g' /etc/hosts    
fi

IP1     68.49.172.18 
REMOTE  68.49.172.18 
IP1 -ne REMOTE 
=>68.49.172.18<=
=>69.49.172.18<=

【问题讨论】:

    标签: string bash comparison ip


    【解决方案1】:
    if [ "$IP1"<>"$REMOTE" ]
    

    不等于运算符是!=,两边都需要空格。它们不仅仅是为了外观,它们是必需的。

    if [ "$IP1" != "$REMOTE" ]
    

    【讨论】:

      【解决方案2】:

      我认为 bash 中的字符串比较运算符是 != 而不是 。你能做一个测试看看是不是你遇到的问题吗?

      【讨论】:

        【解决方案3】:
        if [ "$IP1"<>"$REMOTE" ]
        

        将其更改为:

        if [ "$IP1" != "$REMOTE" ]
        

        【讨论】:

          猜你喜欢
          • 2015-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-15
          • 2010-11-08
          • 2021-10-29
          • 2012-01-22
          • 2015-12-07
          相关资源
          最近更新 更多