tmpfileこれは、最初に使用して一時ファイルを作成する小さな bash コードであり、その後に成功または失敗 mktempの操作が続き、作成された一時ファイルが削除されます。wget
#!/bin/bash -ex
tmpfile="$(mktemp)"
wget -q $1 -O /tmp/temp.txt
if [ $? -eq 0 ] ; then
echo "wget success"
rm "${tmpfile}"
else
echo "wget fail"
rm "${tmpfile}"
fi
正しい URL がスクリプトに渡されると、wget成功すると、最後のコマンドの戻り値を使用してチェック$?され、期待どおりに一時ファイルが削除されます。
root@box:/# ./temp.sh www.google.com
++ mktemp
+ tmpkeyfile=/tmp/tmp.83uGY1NH5B
+ wget -q www.google.com -O /tmp/temp.txt
+ '[' 0 -eq 0 ']'
+ echo 'wget success'
wget success
+ rm /tmp/tmp.83uGY1NH5B
ただし、wget404-not found などの結果として失敗した URL の場合、最後に実行されたものはチェックにwget失敗し、ブロック内の一時ファイルを削除する必要があると思います。以下に示すように、最後の戻り値なしで単に返すだけでは、これは発生しません。への呼び出しが失敗し た場合、これは確かに一時ファイルを削除しません。ifelsewgetwget
root@box:/# ./temp.sh www.googlegoogle.com
++ mktemp
+ tmpkeyfile=/tmp/tmp.pSL7hKyAlz
+ wget -q www.googlegoogle.com -O /tmp/temp.txt
root@box:/#
wget何らかの手段で、すべての戻りエラー コードをキャプチャする方法を教えてください。