Следующий сценарий bash печатает "ERROR!" а не «Сервер реакции на ошибку», даже если Wget возвращает 8:Статус выхода, установленный оператором сравнения в сценарии bash
#!/bin/bash
wget -q "www.google.com/unknown.html"
if [ $? -eq 0 ]
then
echo "Fetch successful!"
elif [ $? -eq 8 ]
then
echo "Server error response"
else
echo "ERROR!"
fi
Когда сценарий выше запускается с -x, первое сравнение с 0, кажется, установив статус выхода 1:
+ wget www.google.com/unknown.html
+ '[' 8 -eq 0 ']'
+ '[' 1 -eq 8 ']'
+ echo 'ERROR!'
ERROR!
Я исправил это, используя переменную для сохранения статуса выхода wget, но я не могу найти ссылку на различные способы, в которых $? установлен. Детали выпечки:
$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Может ли кто-нибудь указать мне на это?
'man wget | меньше +/EXIT'? – Cyrus