Здравствуйте!
Коллеги и не очень), я в замешательстве.
Есть вот такой вот скрипт:
echo stat | nc localhost 2320 > output.txt
SIP="10.21.5.25"
FIND=`grep ${SIP} output.txt`
ALARM="\033[1;31m"
OK="\033[0;32m"
NORMAL="\033[0m"
res(){
while read response; do
echo
case $response in
y|Y)
echo "Continue the script..."
break
;;
n|N)
echo "Script closed. Exit."
exit 0
;;
*)
echo "Please, enter (y/n)!"
esac
done
}
echo "This is SIP: ${SIP}"
echo "This is FIND: ${FIND}"
if [ ${FIND} != ${SIP} ] 2>/dev/null
then
echo -e "${ALARM}ERROR! Server $SIP not connecting. Please chek it manually.${NORMAL}"
echo "Want to continue running the script (y/n)?"
res
else
echo -e "${OK}Server ${SIP} is connected.${NORMAL}"
fi
echo "Done"
Он работает, хотя непонятно почему, ведь если в переменной "FIND" будет "пусто", то возникнет ошибка в условии сравнения
(на сколько мне известно поправьте, если это не так), но скрипт отрабатывает без ошибок.
Есть второй скрипт (целиком приводить не буду, очень большой), в который входит первый скрипт (см. выше),
в адаптированном варианте, вот его кусок:
log "Checking Server: Name: $AI1 IP: $AI1IP"
echo "$AI1 Zookeeper: "$AI1GR""
# Checking the presence of server ${AI1} ih the list ${ZCFILE}
if [ ${AI1GR} != ${AI1IP} ]; # 2>/dev/null
# If not there ask user what to do
then
echo -e "${ALARM}ERROR! Server ${AI1} not connecting. Please chek it manually.${NORMAL}"
echo "Want to continue running the script (y/n)?"
# Checking response
res
# If the server in the list continues the script
else
echo -e "${OK}Server ${AI1} is connected.${NORMAL}"
log "AI-Siebel Server is now start on ${AI1}."
fi
echo ""
И вот этот кусок уже не работает, он, при любом содержимом файла, в который смотрит, выдаёт первое условия оператора сравнения.
На просторах всея интернет вычитал, что нужно заключить в кавычки переменные в сравнении, но если сделать так,
тогда при любом содержимом файла, всегда выполняется второе условие.
Подскажите, что с ним не так?