执行时在屏幕上获取 shell 脚本命令的文本输出

执行时在屏幕上获取 shell 脚本命令的文本输出

考虑以下 shell 脚本

val=($ls)

ls 不会给出任何 shell 文本输出。现在,我们如何在执行命令时在屏幕上获取输出文本?

我可以打印 val 的值来获取输出,但使用 echo 不是重点。所以,使用下面的行就不是这样的

echo $val

那么,简而言之,如何获得在 shell 中同时执行的当前命令的输出,就好像您自己执行了该命令一样?

答案1

您可以通过运行以下命令让 shell 回显它正在执行的所有操作:

sh -x yourscript

或者您可以将其添加为脚本中的第一个命令:

set -x

不过,它可能有点过于冗长。对于调试来说是可以的,但是如果您想要选择性输出,最好自己小心地放置 echo 命令。

答案2

您可以tee命令将标准输出的副本发送到文件,并且可以使用当前终端作为该输出文件。正如您在下面看到的,如果您不使用输出做任何事情,它将打印两次,如果标准输出因对其执行某些操作而被吞没,它将打印一次:

$ echo foo | tee -a "$(tty)"
foo
foo
$ echo foo | tee -a "$(tty)" | grep bar
foo

相关内容