为什么在shell函数中使用括号之间的返回没有效果?

时间:2016-12-14 05:17:23

标签: bash shell

例如

function fff(){
    true && (return)
    echo 1
}
fff

输出为1.

1 个答案:

答案 0 :(得分:1)

显然,fff一直到达终点,这就是为什么要打印1的原因。关键是当return放在parenthesis内时,true && return 在子shell中执行。你应该已经完成​​了

true && (return)

而不是

()

使用子shell执行fff内的任何内容,并且在子shell中的命令完成后,控件将传递回函数echo 1,并在此处执行后续命令#!/bin/bash function fff(){ true && return 255 echo 1 } fff echo $? # Will give you 255 as output 案件。

下面的脚本将为您提供正确的输出

(value modulo 255) - 1

请注意,大于255的返回值将被包裹,即您将获得259。例如,如果您返回3,则会获得(259%255)-1,即karma start