我想将 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