Как у меня могут быть ошибки печати wget, но иначе ничего?
По умолчанию он показывает индикатор выполнения и многое другое.
В версии --no-verbose по-прежнему печатается одна строка для каждого загруженного файла, я этого не хочу.
Параметр --quiet заставляет его работать совершенно тихо, даже в случае ошибки он ничего не печатает.
Есть ли режим, в котором он выводит ошибки, а больше ничего?
На этот вопрос есть очень хорошие ответы, обязательно ознакомьтесь с ними, но я сделал следующее:
wget [wget options] 2>&1 | grep -i "failed\|error"
Используйте curl, нет смысла гадать, как будет выглядеть каждая ошибка.
[wizard@laptop ~] curl -s -S http://www.google.coccm/ > /dev/null && echo "TRUE"
curl: (6) Couldn't resolve host 'www.google.coccm'
[wizard@laptop ~]$ curl -s -S http://www.google.com/ > /dev/null && echo "TRUE"
TRUE
-s / - тихий
Silent mode. Don’t show progress meter or error messages. Makes Curl mute.
-S / - показать ошибку
When used with -s it makes curl show error message if it fails.
И если вам по какой-то причине нужен stderr на stdout.
curl -s -S http://www.google.coccm/ 2>&1 1> /dev/null
Я не вижу для этого варианта. Вам нужно знать, в чем ошибка, или просто произошло ли это? Если вам просто нужно узнать, произошла ли ошибка, вы можете использовать статус выхода.
if ! wget -o /dev/null www.google.com/flasfsdfsdf; then
echo 'Oops!'
fi
Или, может быть:
if ! wget -o logfile www.google.com/flasfsdfsdf; then
cat logfile
fi
И вы можете изменить кота на команду grep, если хотите пофантазировать ...
Перенаправить стандартный вывод на /dev/null
, но сохраните вывод ошибки в выбранной вами оболочке.
В bash это будет:
wget [wget options] > /dev/null
Редактировать: Так wget
плохо себя ведет. Если все ошибки содержат слово «ошибка», вы можете перенаправить grep
wget [wget options] 2>&1 | grep -i "error"
поскольку wget
выводит все сообщения на stderr
, вам нужно использовать перенаправление, прежде чем вы сможете передать его в grep:
wget [options] 2>&1 | grep "^wget:"
Это предполагает, что wget
строки ошибок начинаются с "wget:".
OUT=`wget --no-verbose -O /tmp/a http://example.com/ 2>&1` || echo $OUT
работает. Но он всегда обрезает выходной файл, что вы можете или не хотите.
Завиток лучше:
curl --fail --silent --show-error -o /tmp/a http://example.com
В случае ошибки он не изменяет выходной файл.