在shell脚本中,我想回应一些主要(长时间运行)命令的状态和调试原因.我知道我可以使用set -x或启用所有命令的回显set -v.但我不想看到所有命令(特别是不是echo命令).有没有办法只为一个命令打开回声?
我可以这样做,但那很难看,并且也回应了这一行set +x:
#!/bin/sh
dir=/tmp
echo List $dir
set -x
ls $dir
set +x
echo Done!
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
Jon*_*ler 26
以每个场合的流程为代价,您可以使用:
(set -x; ls $dir)
Run Code Online (Sandbox Code Playgroud)
这在子shell中运行命令,因此set -x仅影响括号内的内容.您无需编码或查看set +x.当我需要进行选择性跟踪时,我会使用它.
使用这个功能怎么样?
runtraced() {
echo "$@"
"$@"
}
dosomething
runtraced dosomethingelse
Run Code Online (Sandbox Code Playgroud)