Bash:使用exit${1:0}而不是exit$1有什么好处

Bash:使用exit${1:0}而不是exit$1有什么好处,bash,Bash,我在Archlinux的mkinitcpio脚本中发现了以下代码片段 cleanup() { if [[ $workdir ]]; then # when PRESET is set, we're in the main loop, not a worker process if (( SAVELIST )) && [[ -z $PRESET ]]; then msg "build directory saved i

我在Archlinux的mkinitcpio脚本中发现了以下代码片段

cleanup() {
    if [[ $workdir ]]; then
        # when PRESET is set, we're in the main loop, not a worker process
        if (( SAVELIST )) && [[ -z $PRESET ]]; then
            msg "build directory saved in %s" "$workdir"                                                                                                                        
        else
            rm -rf "$workdir"
        fi
    fi

    exit ${1:0}
}

这里的出口${1:0}是多余的吗?为什么不直接写退出$1呢。我使用参数(如1、-1、130)测试了该函数,简单版本和复杂版本之间没有差异。

这允许在没有参数或空字符串参数的情况下使用该函数,并导致退出0。这与单独使用exit不同,因为exit单独使用上一个命令中的exit状态。即使msg或rm不会导致0以外的状态,这也避免了作者在更改代码时必须考虑这一点。

这允许在没有参数或空字符串参数的情况下使用它,并导致退出0。这与单独使用exit不同,因为exit单独使用上一个命令中的exit状态。即使msg或rm不会导致0以外的状态,这也避免了作者在更改代码时必须考虑这一点。

目前看来,从索引0中获取变量的子字符串似乎是多余的。。。同样的价值。但是,要退出的空字符串与退出0相同。现在,如果它是exit${1:-0},这将非常有意义-那么0 success将是默认的exit值,并将在缺少参数$1的情况下使用。但是,显式传递0是不必要的。

目前看来,从索引0中获取变量的子字符串似乎是多余的。。。同样的价值。但是,要退出的空字符串与退出0相同。现在,如果它是exit${1:-0},这将非常有意义-那么0 success将是默认的exit值,并将在缺少参数$1的情况下使用。但是,显式传递0是不必要的。

要添加到其他答案中:在这种情况下是多余的,因为不带任何参数的exit与exit 0的方式相同。因此,exit$1和exit${1:-0}实际上是相同的。

添加到其他答案中:在这种情况下是多余的,因为没有任何参数的exit与exit 0的方式相同。因此,exit$1和exit${1:-0}实际上是相同的。

是的,我知道诀窍`exit${1:-0},它将0作为默认的退出值。但是这一个非常不同。是的,我知道诀窍'exit${1:-0},它将0作为默认的退出值。但这一个太不一样了。