小编Ken*_*ams的帖子

暂时取消设置 bash 选项 -x

我喜欢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)

但这样做的两个问题是

  1. 每次我想告诉用户一些事情时,都要写很多东西,而且它足够“不明显”,以至于每次都可能需要注释
  2. set +x也呼应了,这是不可取的。

还有其他效果好的选择吗?

像Make 的前置 an来抑制回声的功能@会很棒,但我在 Bash 中找不到这样的功能。

bash debugging echo output

11
推荐指数
2
解决办法
1939
查看次数

标签 统计

bash ×1

debugging ×1

echo ×1

output ×1