将函数的输出分配给bash shell中的变量

时间:2016-07-14 12:30:03

标签: bash shell

function to_call()
{
    echo "#1 is $1"
}

function call() 
{
    local val=$(to_call testInput)
}

终端上没有输出。为什么?

如果我将其更改为:

function to_call()
{
    echo "#1 is $1"
    return 1
}

function call() 
{
    local val=$(to_call testInput)
    echo "value is $val"
}

而不是"值是1",它是"值是#1是testInput"。会发生什么?

有什么方法可以打印" to_call功能的回声"在终端上,还使用返回状态?

1 个答案:

答案 0 :(得分:2)

没有输出,因为command substitution(调用subshell)并重新分配输出,即。函数的输出到stdout被重新分配给局部变量。

bash return语句仅指定状态, 像exit一样没有终止shell。它允许返回函数的“退出状态”($?)。

父进程无法访问子shell范围内的变量。