如何告诉 bash 重复执行脚本直到满意,然后输出成品

如何告诉 bash 重复执行脚本直到满意,然后输出成品

我希望重复此代码,直到我停止它,方法是设置重复的时间、按 ^c 或设置迭代次数,然后输出重复的结果。代码应该输入自身,这样第一次输入变量 5 和 2 将导致以 5 和 2.25 作为变量重新启动脚本。该脚本有助于通过一次猜测确定数字的平方根。

#!/bin/bash
echo -n "Please enter the number you need to find the square root for and press [ENTER]: "
read fin
echo -n "Please enter guess and press [ENTER]: "
read gues
var=$(echo "$fin/$gues" | bc -l )
var1=$(echo "$var+$gues" | bc -l )
var2=$(echo "$var1/2" | bc -l )
echo $var2

答案1

您需要将该代码放入无限循环中,例如:

while 1; do
  # Rest of code
  ...
done

为了在按下Ctrl+时停止C,您实际上要做的是捕获信号(具体来说SIGINT)。您需要定义一个trap,以便在按下该组合键时触发它。

有关陷阱的更多信息,你可以看看这里,其中包括一个SIGINT示例以及如何在捕获任何内容后打印它。

trap [命令] [信号]

这将指示 trap 命令捕获列出的 SIGNALS,这些 SIGNALS 可能是带有或不带有 SIG 前缀的信号名称,也可能是信号编号。如果信号为 0 或 EXIT,则在 shell 退出时执行 COMMANDS。如果其中一个信号为 DEBUG,则在每个简单命令之后执行 COMMANDS 列表。信号也可以指定为 ERR;在这种情况下,每次简单命令以非零状态退出时都会执行 COMMANDS。请注意,当非零退出状态来自 if 语句的一部分或 while 或 Until 循环时,将不会执行这些命令。如果逻辑 AND (&&) 或 OR (||) 导致非零退出代码,或者使用 ! 运算符反转命令的返回状态,则也不会执行这些命令。

相关内容