在我的bash脚本中,我有一个函数:
expect
脚本echo
返回一个字符串(作为返回值)当我从终端运行脚本并且bash脚本到达以下语句时:
myExpectFunc
[further code...]
为什么我可以看到expect
脚本的控制台输出,但如果我执行以下操作:
retVal=$(myExpectFunc)
[further code...]
没有控制台输出?就像在retVal
被赋值之前一样被抑制。
我希望将local
变量保留给函数,并将这些变量的值作为我的返回值返回,以便能够case
开启。当然,如果我没有向函数声明local
个变量,那么变量将是全局的,我可以简单地case
对全局变量进行调用。但我宁愿不这样做。那么有没有办法能够维护控制台输出并将返回值分配给retval
?
答案 0 :(得分:1)
那么有没有办法能够维护控制台输出并将返回值分配给retval?
是。使用tee
:
retVal=$(myExpectFunc | tee /dev/tty)
myExpectFunc
的所有标准输出都会发送到tee
的标准输入。 tee
将两者复制到文件/dev/tty
(这是您的终端)和自己的标准输出(然后由retVal
捕获)。