SSH मोड पर शेल स्क्रिप्ट के नीचे काम नहीं कर रहा है।
वैरिएबल end_pos को "Stop" मान मिल रहा है, लेकिन जब यह IF लूप में आता है, तो यह स्थिति की जांच नहीं करता है और लूप विफल हो रहा है।
कमांड का आउटपुट:
/mysql/mysql/bin/mysqlbinlog mysql-bin.000001 |tail -10| grep -w -A1 154 | grep -w "Stop" |awk '{print \$10}'
STOP है
echo \ $ end_pos; STOP प्रिंट करें
#!/bin/bash
ssh -t -t username@hostname << ENDSSH
cd /logs
echo "8. We are in SSH mode now" >./log_master.txt
end_pos=\$(/mysql/mysql/bin/mysqlbinlog mysql-bin.000001 |tail -10| grep -w -A1 154 | grep -w "Stop" |awk '{print \$10}')
echo \$end_pos;
if [ "\$end_pos" == "*Stop*" ];
then
echo "Loop succeed" >>./log_master.txt
break
else
echo "loop failed" >>./log_master.txt
fi
exit;
exit;
ENDSSH
IlkKachu टिप्पणी के बाद मैंने "ENDSSH" में उद्धरण दिए (यह केवल एक बदलाव है जिसे मैंने बनाया है) और निष्पादित किया गया। यह त्रुटि फेंक दिया। फिर मैंने डबल ब्रैकेट लगाने की दूसरी विधि का उपयोग किया जैसा कि नीचे दिखाया गया है।
लेकिन जब स्क्रिप्ट के नीचे निष्पादित किया गया, तो मुझे यह मिल रहा था: अगर [["" = " स्टॉप "]];
#!/bin/bash
ssh -t -t username@hostname << ENDSSH
cd /logs
echo "8. We are in SSH mode now" >./log_master.txt
end_pos=\$(/mysql/mysql/bin/mysqlbinlog mysql-bin.000001 |tail -10| grep -w -A1 154 | grep -w "Stop" |awk '{print \$10}')
echo \$end_pos;
if [[ "$end_pos" == "*Stop*" ]];
then
echo "Loop succeed" >>./log_master.txt
break
else
echo "loop failed" >>./log_master.txt
fi
exit;
ENDSSH