在Bash中模拟do-time循环的最佳方法是什么?
我可以在进入而
循环之前检查条件,然后继续在循环中重新检查条件,但这是重复的代码。有没有更干净的方法?
我的脚本的伪代码:
while [ current_time <= $cutoff ]; do
check_if_file_present
#do other stuff
done
如果在$截止
时间之后启动,则不会执行check_if_file_present
,而do-time会执行。
这一实施:
do=true
while $do || conditions; do
do=false
# your code ...
done
它也适用于读取循环,跳过第一次读取:
do=true
while $do || read foo; do
do=false
# your code ...
echo $foo
done
将循环体放置在测试之前的之后。
while
循环的实际主体应该是no-op。
while
check_if_file_present
#do other stuff
(( current_time <= cutoff ))
do
:
done
如果您觉得冒号更可读,可以使用
continue
,而不是冒号。您还可以插入只在迭代之间运行的命令(而不是在第一次迭代之前或最后一次迭代之后),例如echo“在五秒钟内重试”;睡眠5
。或在值之间打印分隔符:
i=1; while printf '%d' "$((i++))"; (( i <= 4)); do printf ','; done; printf '\n'
我将测试更改为使用双括号,因为您似乎在比较整数。在双方括号内,使用比较运算符,如
两个简单的解决方案:
>
执行你的代码一次之前,同时循环
actions() {
check_if_file_present
# Do other stuff
}
actions #1st execution
while [ current_time <= $cutoff ]; do
actions # Loop execution
done
或:
while : ; do
actions
[[ current_time <= $cutoff ]] || break
done
问题内容: 我需要在Python程序中模拟循环。不幸的是,以下简单的代码不起作用: 代替“ 1,2,3,done”,它输出以下输出: 为了捕获“停止迭代”异常并正确中断while循环,我该怎么办? 为什么需要这种东西的一个示例在下面显示为伪代码。 状态机: 问题答案: 我不确定你要做什么。你可以像这样实现一个循环: 要么: 你在尝试使用do while循环来打印列表中的内容在做什么?为什么不使用:
我只是想确定用户是否输入了YES或NO值(尽管不考虑大写,因此)。但是,无论我输入是或否,do while都不会中断,例如。 我正在寻找“当输入值不等于‘是’或‘否’时,再次请求数据”的行为。然而,我的代码建议“不管键入什么,让我们只是为了好玩而继续循环…”我哪里出错了,斯塔克?谢谢
问题内容: 我创建了一个非常简单的bash脚本,该脚本运行一些命令。这些命令之一在运行时需要用户输入。即它询问用户“您想等等吗?”,我只想向其发送回车按键,以便脚本将完全自动化。 我将不必在运行时等待输入或其他任何东西,它足以发送按键,输入缓冲区将处理其余部分。 问题答案: 或利用echo生成的隐式换行符(感谢Marcin) 现在我们可以简单地使用以下选项: ,请勿在每次测试后等待按键 即
这段代码在两个方面出了问题,我无法诊断,但与if语句无关:if (strlen(strA) 我注意到的第二个问题是,如果我输入一个字符串“1111111111111”,它显然太长,程序会说密码太长,但整个do/while循环终止,它会要求我确认密码。它应该要求我再次输入密码。 如果我去掉 if 语句:if (strlen(strA) 任何人都可以诊断问题吗?
do loop用于执行一定次数的语句。 需要执行语句的次数由传递给do循环的值确定。 语法 (Syntax) do循环语句的语法如下 - do count statement #1 statement #2 ... End Statement#1 and Statement#2是一系列在do循环中执行的语句。 count变量表示do循环需要执行的次数。 流程图 (Fl
当布尔条件为True或者条件变为True时,它会重复封闭的语句块。 它可以随时使用Exit Do语句终止。 此循环结构的语法是 - Do { While | Until } condition [ statements ] [ Continue Do ] [ statements ] [ Exit Do ] [ statements ] Loop -or- Do