nur eine kurze Frage mit etwas, das ich nicht verstehe. Alles funktioniert gut - ich versuche nur, mich um etwas zu kümmern.Problem in einer Bash-Schleife
Ich habe ein sehr einfaches Bash-Skript, das dnsmasq einmal pro Tag neu gestartet wird:
LogFile="/var/log/logfile"
declare -a CMD_AR=()
declare -a ECHO_OUT=(stopping starting)
STOP=$(service dnsmasq \stop)
SLEEP=$(\sleep 15)
START=$(service dnsmasq \start)
CMD_AR+=($STOP)
CMD_AR+=($START)
z=0
while [[ $z -le 1 ]]; do
DT=`date +%c`
echo "$DT - ${ECHO_OUT[$z]} dnsmasq..." >> ${LogFile}
eval ${CMD_AR[$z]} >> ${LogFile} 2>&1
unset DT
eval ${SLEEP}
z=$[$z+1]
done
So ... das funktioniert, die DT-Variable nie ändert sich jedoch. Also meine Protokolldatei lautet:
Tue 31 Oct 2017 10:57:07 PM MDT - stopping dnmasq
Tue 31 Oct 2017 10:57:07 PM MDT - starting dnmasq
Sollte nicht die Zeit Zeichenfolge mindestens 15 (der Wert von Schlaf 15) Sekunden anders sein? Ich verstehe nicht, warum die Schleife die DT-Variable nicht neu berechnet - irgendjemand?
Auch nehme ich irgendwelche Vorschläge zu meinem Code - ich bin ein totaler Hack, wenn es um Scripting geht.
während [[$ z -l e 1]]; tun <- ist dies absichtlich können Sie vermeiden, wenn dies beabsichtigt ist, BTW SLEEP = $ (\ Schlaf 15) => SLEEP = "Schlaf 15" –