1

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何らかの手段で、すべての戻りエラー コードをキャプチャする方法を教えてください。

4

1 に答える 1