当前位置: 首页 > 面试题库 >

如何在bash中获得退出状态循环

能修谨
2023-03-14
问题内容

我知道如何使用$?检查先前执行的命令的状态,我们可以使用exit命令使该状态成为当前状态。但是对于bash中的循环,总是返回状态0,有什么办法可以使循环中断某些状态。

#!/bin/bash
while true
do
        if [ -f "/test" ] ; then
                break ### Here I would like to exit with some status
        fi

done
echo $?  ## Here I want to check the status.

问题答案:

循环的状态是最后执行的命令的状态。您可以使用break中断循环,但如果中断成功,则循环状态为0。但是,您可以使用子shell并退出而不是中断。换一种说法:

for i in foo bar; do echo $i; false; break; done; echo $?  # The loop succeeds
( for i in foo bar; do echo $i; false; exit; done ); echo $? # The loop fails

您也可以将循环放入函数中并从中返回一个值。



 类似资料:
  • 它没有提供关于如何执行和的帮助,这在C中定义得很好,并且广泛使用,而且我不必为STDIN读取数据。 有人能帮我用一个与上面的C代码相当的Bash吗?

  • 问题内容: 我想检查用户在程序启动时是否按下了 Shift 键。(这意味着在程序启动前先按 Shift 键)这是一个简单的控制台程序,与X无关。 这可能类似于Win32 函数。 我想知道我是否可以做到这一点以及如何做到,但是不知道直接访问终端有什么利弊。 问题答案: 你不能 该键不被视为字符键,因此,即使您直接访问终端,也将无法检测到该键。 也许您不必。例如,假设您使用的是美式键盘,其中第一行中的

  • 问题内容: 在Java中退出/终止while循环的最佳方法是什么? 例如,我的代码当前如下: 问题答案: 用途: 但是,如果您的代码看起来 完全 像您指定的那样,则可以使用普通循环并将条件更改为:

  • 您可能知道,在正常模式下,当状态更新时,我们使用更新依赖项来获得通知,如下所示: 但在我的例子中,我的状态中有一个数组,我正在尝试在useEffect的循环中更新它,如下所示: 在本例中,每次forEach循环运行时,我都会得到初始val(我知道,因为val不是useffect的依赖项),但如果我将其作为依赖项,它将更新两次。解决这个问题的办法是什么? 编辑:基本上,我的意思是,当我在useffe

  • 如果您能帮助我完成Java类的任务,我将不胜感激。问题提示如下: 编写一个程序来读取非负整数列表并显示最大整数、最小整数和所有整数的平均值。用户通过输入一个不用于查找最大值、最小值和平均值的负哨兵值来指示输入的结束。平均值应该是双精度类型的值,以便用小数部分计算。 我在代码中遇到的问题是,运行时,循环不会完成,除非输入的第一个值为负值,在这种情况下它返回: 输入的最大数字是:0输入的最小数字是:0

  • ...there are dark corners in the Bourne shell, and people use all of them. Chet Ramey exit 命令一般用于结束一个脚本,就像C语言的exit一样。它也能返回一个值给父进程。 每一个命令都能返回一个退出状态(有时也看做 返回状态 ).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零值,此值通常可以被解释