相关疑难解决方法(0)

10
推荐指数
1
解决办法
4015
查看次数

为什么测试"$?" 一个反模式,看一个命令是否成功?

在这里看到测试是否$?是零(成功)或其他东西(失败)是反模式,但我无法在其他任何地方找到它.

坚持维基百科反模式的定义:"反模式(或反模式)是对反复出现的问题的常见反应,这种反复出现的问题通常是无效的,并且可能会产生极大的反作用." 为什么这会是反模式?

bash shell sh

8
推荐指数
1
解决办法
476
查看次数

检查while循环中调用的程序的退出代码

我想在bash中编写一个循环,它执行直到某个命令停止失败(返回非零退出代码),如下所示:

while ! my_command; do
    # do something
done
Run Code Online (Sandbox Code Playgroud)

但是在这个循环中我需要检查my_command返回的退出代码,所以我尝试了这个:

while ! my_command; do
    if [ $? -eq 5 ]; then
        echo "Error was 5"
    else
        echo "Error was not 5"
    fi
    # potentially, other code follows...
done
Run Code Online (Sandbox Code Playgroud)

但随后特殊变量?变为0循环体内.明显的解决方案是:

while true; do
    my_command
    EC=$?
    if [ $EC -eq 0 ]; then
        break
    fi
    some_code_dependent_on_exit_code $EC
done
Run Code Online (Sandbox Code Playgroud)

如何检查my_command循环体内的(在循环头中调用)的退出代码,而不使用while true具有中断条件的循环重写此示例,如上所示?

bash shell

6
推荐指数
2
解决办法
8681
查看次数

标签 统计

bash ×3

shell ×3

linux ×1

sh ×1