Ich versuche, ein einfaches Bash-Skript zu erstellen. (gerade angefangen, an bash scripting zu arbeiten) das Skript ist einfach. Es gibt ein Problem mit dem rsyslog-Dienst und von Zeit zu Zeit stirbt. Ich versuche, ein Skript zu machen, um zu überprüfen, ob der Dienst tot ist, um es neu zu starten bis jetzt möchte ich überprüfen, ob meine Bedingungen in Ordnung sind, aber es scheint, dass ich einen Fehler erhalte. Kannst du mich beraten? HierIch versuche, mein Bash-Skript zu erstellen
ist das Skript:
#!/bin/bash
a="dead"
b="running"
while i in $(/etc/init.d/rsyslog status | grep -o 'running\|dead');
do
if
[ "$a" == "$i" ];
then
echo "service rsyslog is dead "
if
[ "$b" == "$i" ];
then
echo "service rsyslog is running"
else
echo "nothing to do";
fi;
done
-------------
Ich erhalte die folgenden Syntaxfehler.
./rsyslogcheck.sh: Linie 17: Syntaxfehler in der Nähe von unerwartetem Token done' ./rsyslogcheck.sh: line 17:
done‘
Vielen Dank im Voraus !!
Führen Sie dies durch https://www.shellcheck.net - das erste 'if' fehlt seine' fi'. –
Sie müssen nicht ein Semikolon (';') * und * einen Zeilenumbruch verwenden, um Anweisungen/Befehle zu trennen. –
Sie verwechseln auch 'while' Loops mit' for' Loops. Es gibt keinen 'in'-Operator in' bash'; 'in' ist nur ein Schlüsselwort, um" foreach "zu" buchstabieren ". – chepner