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功能的回声"在终端上,还使用返回状态?
答案 0 :(得分:2)
没有输出,因为command substitution(调用subshell)并重新分配输出,即。函数的输出到stdout被重新分配给局部变量。
bash return
语句仅指定状态,
像exit
一样没有终止shell。它允许返回函数的“退出状态”($?
)。
父进程无法访问子shell范围内的变量。