我已经阅读了有关该主题的许多主题,但没有一个解决方案对我有用。
我正在尝试执行以下操作:
RELEASE_COMMAND_OUTPUT=$(exec ~/temp/execs/github-release release --user patick --repo $REPO_NAME --tag $RELEASE_VERSION --name $RELEASE_VERSION --description "$DESC")
但 的输出./github-release
不存储在RELEASE_COMMAND_OUTPUT
变量中。
我知道这个概念命令替换,但我尝试过的解决方案均无效。我究竟做错了什么?
答案1
正如您的问题评论中所解释的,该变量RELEASE_COMMAND_OUTPUT
只会获得STDOUT
(标准输出)您的命令,但不是STDERR
(标准错误),这似乎是你的情况。
当对命令的输出有疑问时,可以使用流程替代到将其标记STDERR
为红色如以下示例所示:
command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)
这是重定向(2>
部分)作为块的输入STDERR
,它将在终端中以红色打印。command
while
您也可以执行相反的操作,将其标记STDOUT
为红色:
command | grep .
因为 grep 只作用于STDOUT
笔记:在某些系统中您可能需要启用颜色在 grep 中使用标志--color=auto
.在 Macos 和 Linux 上,通常默认启用它。