положить вывод команды в строку

Я хочу сохранить вывод команды bash в строку скрипта bash. Часть, которая имеет значение, выглядит следующим образом:

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

Вывод команды при запуске на терминале (не с использованием скрипта bash): «Игроки не найдены». Когда я запускаю скрипт bash (обратите внимание, что эхо отсутствует), он выводит «Не найдено игроков» в терминал. Вместо этого я хочу, чтобы он помещался не в терминал, а в переменную.

1
задан 16 May 2019 в 03:59

2 ответа

Похоже, ваша команда выдает стандартный вывод ошибки, а не стандартный вывод. Попробуйте использовать модификатор 2>&1 в вашей команде оболочки.

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

Модификатор означает «отправить стандартную ошибку на стандартный вывод».

0
ответ дан 16 May 2019 в 03:59

Пожалуйста, попробуйте использовать обратные кавычки (`), обратные кавычки выполняют команду и возвращают результат в той же оболочке 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
0
ответ дан 16 May 2019 в 03:59

Другие вопросы по тегам:

Похожие вопросы: