【发布时间】:2018-01-18 14:34:50
【问题描述】:
我正在为一些基本逻辑而苦苦挣扎,我希望有人可以帮助我。
我编写了一个完整的循环来运行文件并确定传输是否失败或被跳过。
如果不是,那么它会声明“BACKUP IS GOOD”并干净地退出。 如果失败,则声明“BACKUP IS NOT GOOD”,直到达到最大重试次数 5。
理论上,如果正在检查的文件发生更改(在这 5 次运行中的任何位置),它将更改为“BACKUP IS GOOD”。
我遇到的问题是循环没有捕捉到这种变化。
任何建议将不胜感激。
max_retries="5"
backup_count="1"
failed=$(grep -c "Transfer failed: 0" "mylog.txt")
skipped=$(grep -c "Transfer skipped: 0" "mylog.txt")
while (( $max_retries >= $backup_count ))
do
if (( $skipped == 1 )) && (( $failed == 1 )); then
echo "BACKUP IS GOOD"
exit 0
elif (( $skipped != 1 )) || (( $failed != 1 )); then
echo "BACKUP IS NOT GOOD"
sleep 15
(( backup_count++ ))
fi
done
【问题讨论】:
-
@ViktorKhilin 不,这种语法很好,除非你说你不能使用 Bash 结构,但它被标记为“bash”。
-
好吧,你不会再次执行
grep。你在期待什么?变量会神奇地改变自己吗? :) -
谢谢@PesaThe - 我盯着这个看了好久,似乎总是错过一些小事!漫长的一天!
标签: linux bash loops while-loop