私は理解していないことだけで簡単に質問します。すべてがうまくいきます - 私は何かの周りに頭を抱えようとしています。Bashループでの問題
私は1日1回のdnsmasqを再起動している非常に単純なbashスクリプトがあります。
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
をそう...この作品は、しかし、DT変数が変わることはありません。だから私のログファイルは読み取ります
Tue 31 Oct 2017 10:57:07 PM MDT - stopping dnmasq
Tue 31 Oct 2017 10:57:07 PM MDT - starting dnmasq
は、時刻文字列は、少なくとも15(睡眠の値15)秒異なることはないでしょうか?なぜループがDT変数を再計算していないのか理解できません。誰ですか?
また、私は自分のコードについても何か提案をしていきます。私はスクリプティングに関しては完全にハックしています。
[[$ z -l e1]];あなたがこれを意図的なものにしている間に、意図的に避けることができるこの意図的なものであるかどうかを知るために、BTW SLEEP = $(\ sleep 15)=> SLEEP = "sleep 15" –