例如考虑以下情况:
我需要以 5 秒的时间间隔随机连续打印一些数字,并且如果遇到“2”的输出,我需要终止打印数字的终端过程。这可能吗?
我知道我可以在 c、c++、java 等中执行相同的操作。但我想使用 bash 脚本来执行此操作。
注意:: 如果仅“在”我遇到“输出”为“2”(或任何值)时才需要终止该过程,我强调这一点是因为“我需要为特定结果终止终端过程”。
答案1
bash shell 知道它的父进程,因此你可以执行以下操作:
(( number == 2 )) && kill $PPID
參考文獻:http://www.gnu.org/software/bash/manual/bashref.html#Bash-Variables
答案2
您可以使用一个简单的if
语句来做到这一点:
# your file reading code goes here, make sure $output is set
if [ $output -eq 2 ]; then return; fi
答案3
你想要的是终止运行脚本的 shell。这有点棘手,因为运行脚本将产生另一个 shell,而终止它的简单方法(kill -9 $$
或 exit
)将在衍生shell,而不是终端调用的那个。
我发现唯一可靠的方法是来源而不是运行脚本。因此,不要:
bash script.sh
做:
. script.sh
这将导致内容在调用 shell 中运行,而不是在生成的 shell 中运行。
脚本本身很简单,如另一个答案所示:
while true; do sleep 1; number=$RANDOM; echo $number; if [ 2 = 2 ]; then exit; fi; done
实际上,如果你在当前 shell 中以一行代码运行这个命令,它将要当看到值 2 时关闭终端。
你没有说随机数从何而来;我使用了内置的 RANDOM bash,它输出 0-32767 范围内的整数。