Подстановка команд не работает

Я пытаюсь сохранить вывод команды в переменную в нижеприведенном сценарии bash, но вывод отображается на экране вместо сохранения в переменной

#!/bin/bash

check=$(ip link show dev mylink)

echo "$check"

person MrDev    schedule 14.03.2016    source источник
comment
Что такое bva и почему вы ожидаете, что echo будет делать что-то еще, кроме вывода аргументов в виде текста на стандартный вывод?   -  person tripleee    schedule 14.03.2016
comment
@tripleee это не весь скрипт, я использую этот скрипт, чтобы выполнить некоторую работу, если ссылка не существует. Мне нужен вывод переменной для выполнения проверки.   -  person MrDev    schedule 14.03.2016
comment
@MrDev: Если это все, то вместо этого вы можете просто проверить, существует ли /sys/class/net/mylink.   -  person Dolda2000    schedule 14.03.2016
comment
@triplee Я пробовал все и много искал, но переменная пуста.   -  person MrDev    schedule 14.03.2016
comment
Вы имеете в виду, что ip link отображается на экране, а echo "$check" ничего не отображает? Я думаю, вы, вероятно, ошибаетесь, но если вы можете добавить стенограмму с bash -x к вопросу, чтобы продемонстрировать это, я буду рад удалить дубликат.   -  person tripleee    schedule 14.03.2016
comment
Обратите внимание, что было бы разумно использовать что-то вроде echo "[$check]", чтобы вы могли заметить разницу между отображением значения, захваченного в $check (из-за квадратных скобок), и необработанным выводом команды ip. Если вывод команды появляется, несмотря на подстановку команды, скорее всего, она пишет в stderr. Вы можете продемонстрировать, используя check=$(ip link show dev mylink 2>&1); echo "[$check]", который ничего не покажет, кроме материала в квадратных скобках.   -  person Jonathan Leffler    schedule 14.03.2016
comment
@JonathanLeffler Да, вы правы, запись в stderr с использованием 2›&1 сработала. Большое спасибо :)   -  person MrDev    schedule 14.03.2016
comment
Это довольно неприятное поведение программы ip. Запрошенный вывод должен перейти на стандартный вывод; только сообщения об ошибках должны выводиться в стандартную ошибку (но они должны выводиться в стандартную ошибку, а не в стандартный вывод).   -  person Jonathan Leffler    schedule 14.03.2016
comment
stackoverflow.com/questions/962255/ выглядит как хороший канонический.   -  person tripleee    schedule 14.03.2016
comment
Лучший дубликат, который я могу найти, на удивление недавний, но точно такая же проблема. Тот, на который вы ссылаетесь, тоже интересен и намного старше. Я выбрал последний, но SO 962255 Как сохранить стандартную ошибку в переменной в bash скрипте тоже неплохо. (Полное раскрытие: у меня есть принятый ответ на старый, хотя есть еще один ответ с еще несколькими голосами.)   -  person Jonathan Leffler    schedule 14.03.2016