Как перенаправить stderr на переменную внутри условия if? Bash

yum remove package_name удалит только этот пакет и все его зависимости.

yum autoremove удалит неиспользуемые зависимости

Чтобы удалить пакет с его зависимостями, необходимо установить yum плагин под названием: remove-with-leaves

Для его установки введите:

yum install yum-plugin-remove-with-leaves

Для удаления имя_пакета введите:

yum remove package_name --remove-leaves
2
22.07.2016, 10:14
2 ответа

/ dev / null - стандартное устройство для «выбрасывания вещей».

Таким образом,

some_command 2> /dev/null

отправит ошибки из some_command в / dev / null - т.е. отбросит ошибки.

Таким образом:

if ! mkdir -p $FINAL_BACKUP_DIR 2> /dev/null
then
  logger -t $LOGGER_TAG "Cannot create backup directory in $FINAL_BACKUP_DIR. Backup canceling."
  exit 1
fi

Обратите внимание, что вам также не нужны все эти лишние ; символы: -)

РЕДАКТИРОВАТЬ:

Вы также можете направить ошибку для вывода и зафиксировать результат в переменную и проверьте, пуста ли эта переменная. Таким образом, вы можете сообщить причину пользователю

result=$(mkdir -p $FINAL_BACKUP_DIR 2>&1)
if [ -n "$result" ]
then
  logger -t $LOGGER_TAG "Cannot create backup directory in $FINAL_BACKUP_DIR. Backup canceling: $result"
  exit 1
fi
6
27.01.2020, 21:56

попробуйте

if ! mkdir -p $FINAL_BACKUP_DIR > ${test1} 2>&1
then
    logger -t $LOGGER_TAG "Cannot create backup directory in $FINAL_BACKUP_DIR. Backup canceling. $(< ${test1})" 
    exit 1;
fi;

где

  • > $ {test1} перенаправить вывод (stdout)
  • 2> & 1 указать bash объединить stderr и stdout
  • $ (<$ test1) прочитать содержимое файла $ {test1}
  • , вам необходимо удалить $ {test1}
  • , протестированный на ubuntu 15.X, с действительным $ {test1}
1
27.01.2020, 21:56

Теги

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