У меня есть «простой» скрипт, который запускает несколько команд, обычно я просто хочу увидеть, как несколько эхо-сигналов сообщают мне, где они находятся. Но иногда мне нужен подробный вывод, который показывает вывод некоторых выполняемых команд.

Пример для нормального использования

echo "Simple message"
wget 'http://example.com' > /dev/null

Подробный вариант

echo "Simple message"
wget 'http://example.com'

Я думал об использовании переменной для хранения перенаправления вывода

output=""
if [ -z "$1" ]
  then
    output="> /dev/null"
fi
echo "Simple message"
wget 'http://example.com' $output

Проблема в том, что он не работает, поэтому я добавил -x к шебангу, и результат показывает мне

wget 'http://example.com' '>' /dev/null

Как я могу > от того одинарных кавычек?

В оригинальном сценарии происходит нечто большее, чем простой wget, это всего лишь короткий пример.

1 ответ1

0

Перенаправление wget в stdout позволяет вам изменить ваш скрипт так:

#!/bin/bash
output="/dev/stdout"
if [ -z "$1" ]; then
output="/dev/null"
fi
echo "simple message"
wget -qO- 'http://example.com' > "$output"

Таким образом, всякий раз, когда ваш первый параметр пуст, он всегда будет перенаправлять в /dev /null, в противном случае выводится в стандартный вывод.

Если вы не хотите, чтобы он выводился на стандартный вывод, я бы предложил создать файл (который всегда будет одинаковым), а затем прочитать его после wget.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .