Aus irgendeinem Grund bekomme ich nicht die Ausgabe meiner 2. Echo-Linie, wenn ich mein Skript ausführen. Hier ist mein Code-Schnipsel:2. Echo-Anweisung in Bash-Skript funktioniert nicht
IS_RUNNING=$(netstat -anp | grep ":7600" | grep java | awk '{print $7}' | cut -d"/" -f 2)
start(){
nohup /bin/su -c "/opt/app/bin/service start" - user &>/dev/null &
echo "Starting Services please wait"
sleep 30
if [ "$IS_RUNNING" = java ];
then
echo "Service is now running"
exit 0
fi
}
Interessanterweise. wenn ich es mit laufe:
sh -x ./service start
Ich bekomme die Ausgabe erwartet und mein 2. Echo wird auf den Bildschirm geschrieben.
+ case "$1" in
+ start
+ echo 'Starting Services please wait'
Starting Services please wait
+ sleep 30
+ nohup /bin/su -c '/opt/app/bin/service start' - user
+ '[' java = java ']'
+ echo 'Service is now running'
Service is now running
+ exit 0
Ohne sh -x zu verwenden, ich dies einfach erhalten:
[[email protected]]# ./service start
Starting Services please wait
[[email protected]]#
Ich habe ein Gefühl, das ich einfach etwas mit Blick auf bin. Kann jemand helfen?
Ist es nur ich oder ist Ihre 'sh -x' Ausgabe in einer anderen Reihenfolge als die von Ihnen angegebene Quelle? –
Nein, kopiert direkt vom Bildschirm. – user53029
Können Sie diese Frage neu schreiben, um anderen Menschen nützlicher zu sein? Ein anderer Benutzer mit einem Bash-Skript, bei dem das zweite Echo nicht mit Sicherheit funktioniert, wird nicht das selbe zugrundeliegende Problem haben, und daher sind Antworten darauf wahrscheinlich nicht hilfreich für sie. –