2012-02-09 16 views
5

मुझे बाश में स्ट्रिंग तुलना के साथ कोई समस्या है: निम्न नमूना मुझे बता रहा है कि तुलना की जा रही दो स्ट्रिंग अलग हैं। वो नहीं हैं।बैश स्ट्रिंग तुलना

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<= 

उत्तर

8
if [ "$IP1"<>"$REMOTE" ] 

नहीं बराबर ऑपरेटर != है, और आप दोनों पक्षों पर रिक्त स्थान की जरूरत है। वे सिर्फ दिखने के लिए नहीं हैं, वे आवश्यक हैं।

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

मुझे लगता है कि बैश में स्ट्रिंग तुलना ऑपरेटर है! = और <>। क्या आप यह देखने के लिए एक परीक्षण कर सकते हैं कि क्या आपकी समस्या है?

3
if [ "$IP1"<>"$REMOTE" ] 

बदलें इस के लिए:

if [ "$IP1" != "$REMOTE" ] 
संबंधित मुद्दे