我喜欢set -x
在脚本中使用来显示正在发生的情况,特别是如果脚本将在 CI/CD 管道中运行并且我可能需要事后调试一些故障。
这样做的一个烦恼是,如果我想向用户回显一些文本(例如,状态消息或"I'm starting to do $X"
),那么该消息会输出两次 - 一次用于echo
回显命令本身,然后一次作为该echo
命令的输出。
有什么好方法可以让这个变得更好?一种解决方案是这样的:
set -x
... bunch of normal commands that get echoed
(
# Temporarily don't echo, so we don't double-echo
set +x
echo "Here is my status message"
)
... rest of commands get echoed again
Run Code Online (Sandbox Code Playgroud)
但这样做的两个问题是
set +x
也呼应了,这是不可取的。还有其他效果好的选择吗?