将命令的输出放入字符串中

将命令的输出放入字符串中

我想将 bash 命令的输出存储到 bash 脚本中的字符串中。重要的部分如下:

#!/bin/bash
player_status="$(playerctl -l)"

在终端上运行命令(而不是使用 bash 脚本)时,命令的输出为“未找到玩家”。当我运行 bash 脚本(请注意,没有回显)时,它会向终端输出“未找到玩家”。我希望它不要将其放在终端中,而是放在变量中。

答案1

听起来您的命令正在向标准错误而不是标准输出生成输出。请尝试2>&1在 shell 命令上使用修饰符。

#!/bin/bash
player_status="$(playerctl -l 2>&1)"

该修饰符的意思是“将标准错误发送到标准输出”。

答案2

请尝试使用反引号(`),反引号在同一个 shell LEVEL 中执行命令并返回输出

player_status=`playerctl -l`

代替

player_status="$(playerctl -l)"   # Here the command is executed in child process thus its output is not available in this script from which CHILD process was executed

相关内容