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 命令。
您可以使用tee命令将标准输出的副本发送到文件,并且可以使用当前终端作为该输出文件。正如您在下面看到的,如果您不将输出用于任何事情,它将打印两次,如果标准输出通过对其进行某些操作而被吞下,它将打印一次:
$ echo foo | tee -a "$(tty)"
foo
foo
$ echo foo | tee -a "$(tty)" | grep bar
foo
Run Code Online (Sandbox Code Playgroud)