由于是管道,因此需要为行中的所有命令设置“$DRYRUN”。如果您只是在所有命令之前添加$DRYRUN,那么它将起作用,但您将只看到最后一个命令的输出。如果要显示所有命令,一种方法是更改dryrun功能,即(
根据Charles Duffy评论编辑
):
dryrun() {
if [[ ! -t 0 ]]
then
cat
fi
printf -v cmd_str '%q ' "$@"; echo "DRYRUN: Not executing $cmd_str" >&2
}
然后您可以执行以下操作:
$DRYRUN tar cf - drytestfile | \
$DRYRUN 7z a -m0=lzma2 -mx=9 -mmt=$nbCores -si drytestfile.tar.7z | \
$DRYRUN tee -a /tmp/testlog
例如:
dryrun echo "hello" | \
dryrun echo "world" | \
dryrun echo "foo" | \
dryrun echo "bar"
将产生:
DRYRUN: Not executing command echo hello
DRYRUN: Not executing command echo world
DRYRUN: Not executing command echo foo
DRYRUN: Not executing command echo bar