将 shell 脚本的输出存储到变量

将 shell 脚本的输出存储到变量

我已经阅读了有关该主题的许多主题,但没有一个解决方案对我有用。

我正在尝试执行以下操作:

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,它将在终端中以红色打印。commandwhile

您也可以执行相反的操作,将其标记STDOUT为红色:

command | grep .

因为 grep 只作用于STDOUT

笔记:在某些系统中您可能需要启用颜色在 grep 中使用标志--color=auto.在 Macos 和 Linux 上,通常默认启用它。

相关内容