=
Petesh はもちろん正しいです。変数名の直後に記号を付ける必要があります。
この特定のケースでは、 を使用しwget -i input-urls.txt -o logfile.txt
、ログファイルでエラーを grep することをお勧めします。wget の-i
フラグは、テキスト ファイルから URL のリストを読み取り、それぞれを "wgets" するので、車輪を再発明する手間が省けます。
シェル スクリプトで使用する場合は、次のようなものを使用します。
#!/bin/sh
DIR=/var/www/html/
# wget log file
LOGFILE=wget.log
# wget output file
FILE=dailyinfo.`date +"%Y%m%d"`
# just for debugging
cd $DIR
echo "wget-ing urls from $FILE and writing them to $FILE in $DIR. Saving logs to $LOGFILE"
wget -i $FILE -o $LOGFILE
grep -i 'failed' logfile.txt
ログファイルからのエラーの例を次に示します。
--2013-01-15 15:01:59-- http://foo/
Resolving foo... failed: nodename nor servname provided, or not known.
wget: unable to resolve host address ‘foo’
wget のリターン コードを確認するのにも役立ちます。0
は成功を示し、ゼロ以外の値はさまざまな失敗を示します。シェル変数にアクセスすることで確認できます$?
。
そのため、これを組み込んだサンプル スクリプトを次に示します。
#!/bin/sh
wget -i input-urls.txt -o logfile.txt
if [ $? -eq 0 ]; then
echo "All good!"
else
# handle failure
grep -i 'failed' logfile.txt
fi
詳細が必要な場合は、wget のリターン コードがマニュアル ページ (または、このman wget
ようなオンライン リソースを使用) に一覧表示されています。簡単な実験を行ったところ、URL の 1 つだけが失敗した場合でも、wget はゼロ以外の終了コードを返すようです。