在shell脚本中,我想回应一些主要(长时间运行)命令的状态和调试原因。我知道我可以使用set -x或set -v为所有命令启用回显。但是我不想看到所有的命令(特别是echo命令)。是否有一种方法可以打开一个命令的回声?
我可以这样做,但这很丑,并且回应线x集合:
#!/bin/sh dir=/tmp echo List $dir set -x ls $dir set +x echo Done!
有没有更好的方法来做到这一点?
每次进行一次,您都可以使用:
(set -x; ls $dir)
这将在子shell中运行命令,因此set -x仅影响括号内的内容。你不需要编码或看到集合x。当我需要进行选择性跟踪时,我使用它。