【发布时间】:2018-04-13 09:43:19
【问题描述】:
只是一个我不理解的问题。一切正常 - 我只是想弄清楚一些事情。
我有一个非常简单的 Bash 脚本,它每天重新启动一次 dnsmasq:
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(sleep 15的值)秒吗?我不明白为什么循环没有重新计算 DT 变量 - 任何人?
此外,我也会对我的代码提出任何建议 - 在编写脚本方面,我是个彻头彻尾的黑客。
【问题讨论】:
-
而 [[ $z -l e 1 ]]; do SLEEP="sleep 15"
标签: bash loops while-loop