Я пытаюсь сохранить вывод команды в переменную в нижеприведенном сценарии bash, но вывод отображается на экране вместо сохранения в переменной
#!/bin/bash
check=$(ip link show dev mylink)
echo "$check"
Я пытаюсь сохранить вывод команды в переменную в нижеприведенном сценарии bash, но вывод отображается на экране вместо сохранения в переменной
#!/bin/bash
check=$(ip link show dev mylink)
echo "$check"
echo
будет делать что-то еще, кроме вывода аргументов в виде текста на стандартный вывод? - person tripleee   schedule 14.03.2016/sys/class/net/mylink
. - person Dolda2000   schedule 14.03.2016ip link
отображается на экране, аecho "$check"
ничего не отображает? Я думаю, вы, вероятно, ошибаетесь, но если вы можете добавить стенограмму сbash -x
к вопросу, чтобы продемонстрировать это, я буду рад удалить дубликат. - person tripleee   schedule 14.03.2016echo "[$check]"
, чтобы вы могли заметить разницу между отображением значения, захваченного в$check
(из-за квадратных скобок), и необработанным выводом командыip
. Если вывод команды появляется, несмотря на подстановку команды, скорее всего, она пишет в stderr. Вы можете продемонстрировать, используяcheck=$(ip link show dev mylink 2>&1); echo "[$check]"
, который ничего не покажет, кроме материала в квадратных скобках. - person Jonathan Leffler   schedule 14.03.2016ip
. Запрошенный вывод должен перейти на стандартный вывод; только сообщения об ошибках должны выводиться в стандартную ошибку (но они должны выводиться в стандартную ошибку, а не в стандартный вывод). - person Jonathan Leffler   schedule 14.03.2016bash
скрипте тоже неплохо. (Полное раскрытие: у меня есть принятый ответ на старый, хотя есть еще один ответ с еще несколькими голосами.) - person Jonathan Leffler   schedule 14.03.2016