bash:在 for 表达式中声明局部变量

bash:在 for 表达式中声明局部变量

该函数:

function prova {
    for (( i=1; i<=5; i++ )); do echo test; done
    return $?
}

返回:

test
test
test
test
test

另一个则是:

function prova {
    for (( local i=1; i<=5; i++ )); do echo test; done
    return $?
}

返回:

bash: ((: local i=1: syntax error in expression (error token is "i=1")

像在其他语言中一样,在 bash 中是否可以在 for 表达式中动态地将变量声明为“本地”?

答案1

你可以阅读Bash:“屏蔽返回值”是什么意思?

当您将变量声明为本地变量或导出变量时,该变量本身就是一个将返回成功或不返回的命令。

因此,如果您想根据命令的返回值采取行动 [...],您将无法做到这一点,因为只要本地声明成功(几乎总是如此),它就会以 0 退出。

function prova {
    local i=1
    for (( "$i"; i<=5; i++ )); do echo test; done
    return $?
}

prova

test
test
test
test
test

相关内容