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

Suh*_*zar 12 shell scripting echo

考虑以下 shell 脚本

val=($ls)
Run Code Online (Sandbox Code Playgroud)

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

我可以打印 val 的值来获取输出,但使用 echo 不是重点。因此,使用以下行并非如此

echo $val
Run Code Online (Sandbox Code Playgroud)

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

Bob*_*ger 13

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

sh -x yourscript
Run Code Online (Sandbox Code Playgroud)

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

set -x
Run Code Online (Sandbox Code Playgroud)

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

  • 这不会显示命令的输出 - 它只会显示正在运行的命令。 (3认同)

l0b*_*0b0 5

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

$ echo foo | tee -a "$(tty)"
foo
foo
$ echo foo | tee -a "$(tty)" | grep bar
foo
Run Code Online (Sandbox Code Playgroud)