wget 失败 returns 最后执行的命令代码未知
wget on failure returns last command executed code unknown
这是一个小的 bash 代码,它最初使用 mktemp
创建临时文件 tmpfile
,然后在成功或失败时执行 wget
操作删除创建的临时文件.
#!/bin/bash -ex
tmpfile="$(mktemp)"
wget -q -O /tmp/temp.txt
if [ $? -eq 0 ] ; then
echo "wget success"
rm "${tmpfile}"
else
echo "wget fail"
rm "${tmpfile}"
fi
当权限 url 传递给脚本时,wget
成功检查使用 $?
的最后一个命令的 return 值并按预期删除临时文件.
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
但是,如果 url 结果 wget
不成功,例如 404-not found 等,我假设最后执行的 wget
应该会失败 if
检查和删除 else
块中的临时文件。这不会发生,因为 wget
只是 returns 没有任何最后的 return 值,如下所示。这确实不会在调用 wget
失败时删除临时文件。
root@box:/# ./temp.sh www.googlegoogle.com
++ mktemp
+ tmpkeyfile=/tmp/tmp.pSL7hKyAlz
+ wget -q www.googlegoogle.com -O /tmp/temp.txt
root@box:/#
我可以知道如何通过任何方式捕获 wget
的每个 return 故障代码。
问题:
May I know how to capture every return failure code of wget by any
means.
它应该响应每个 return http 状态代码:
wget --server-response http://googlegoogle/nx.file 2>&1 | awk '/^ HTTP/{print }'
编辑:
我试过你的代码,它工作正常
bash -x ./abc.sh www.googlegoogle.com
++ mktemp
+ tmpfile=/tmp/tmp.pwa08vGnjo
+ wget -q www.googlegoogle.com -O /tmp/temp.txt
+ '[' 4 -eq 0 ']'
+ echo 'wget fail'
wget fail
+ rm /tmp/tmp.pwa08vGnjo
这是 wget 的退出代码列表:
0 No problems occurred
1 Generic error code
2 Parse error — for instance, when parsing command-line options, the .wgetrc or .netrc…
3 File I/O error
4 Network failure
5 SSL verification failure
6 Username/password authentication failure
7 Protocol errors
8 Server issued an error response
检查这个:Link
这是一个小的 bash 代码,它最初使用 mktemp
创建临时文件 tmpfile
,然后在成功或失败时执行 wget
操作删除创建的临时文件.
#!/bin/bash -ex
tmpfile="$(mktemp)"
wget -q -O /tmp/temp.txt
if [ $? -eq 0 ] ; then
echo "wget success"
rm "${tmpfile}"
else
echo "wget fail"
rm "${tmpfile}"
fi
当权限 url 传递给脚本时,wget
成功检查使用 $?
的最后一个命令的 return 值并按预期删除临时文件.
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
但是,如果 url 结果 wget
不成功,例如 404-not found 等,我假设最后执行的 wget
应该会失败 if
检查和删除 else
块中的临时文件。这不会发生,因为 wget
只是 returns 没有任何最后的 return 值,如下所示。这确实不会在调用 wget
失败时删除临时文件。
root@box:/# ./temp.sh www.googlegoogle.com
++ mktemp
+ tmpkeyfile=/tmp/tmp.pSL7hKyAlz
+ wget -q www.googlegoogle.com -O /tmp/temp.txt
root@box:/#
我可以知道如何通过任何方式捕获 wget
的每个 return 故障代码。
问题:
May I know how to capture every return failure code of wget by any means.
它应该响应每个 return http 状态代码:
wget --server-response http://googlegoogle/nx.file 2>&1 | awk '/^ HTTP/{print }'
编辑: 我试过你的代码,它工作正常
bash -x ./abc.sh www.googlegoogle.com
++ mktemp
+ tmpfile=/tmp/tmp.pwa08vGnjo
+ wget -q www.googlegoogle.com -O /tmp/temp.txt
+ '[' 4 -eq 0 ']'
+ echo 'wget fail'
wget fail
+ rm /tmp/tmp.pwa08vGnjo
这是 wget 的退出代码列表:
0 No problems occurred
1 Generic error code
2 Parse error — for instance, when parsing command-line options, the .wgetrc or .netrc…
3 File I/O error
4 Network failure
5 SSL verification failure
6 Username/password authentication failure
7 Protocol errors
8 Server issued an error response
检查这个:Link