根据 使用“&&”对于 cURL 提交表单无效(如果第一行失败,则不执行第二行)
在下面的代码中;第一行是curl提交;第二行用于排队:
curl -b cookies.txt \
-d title="$(sed '1,/sblmtitle/d;/slpstitle/,$d' sedut.html)" \
-d taxonomy%5Btags%5D%5B1%5D="$(
sed '1,/sblmkategori/d;/slpskategori/,$d' sedut.html
)" \
-d teaser_include=1 \
-d body="$(sed '1,/sblmkonten/d;/slpskonten/,$d' sedut.html)" \
-d field_source%5B0%5D%5Burl%5D="$(
sed '1,/sblmurl/d;/slpsurl/,$d' sedut.html
)" \
-d changed= \
-d form_build_id=form-424f851ad50bd4781c8c25ab7efd5c4c \
-d form_token=0e7cc7437faf816f1ecd96087286bda9 \
-d form_id=post_node_form \
-d op=Save http://www.web.org/submit/post &&
for file in $(ls *.html | sort -r | tail -1); do
mv $file sedut.html
done
如果cURL
提交失败,会打印出sedut.html
内容。如果cURL
提交成功,则不会打印任何内容。
但无论提交成功还是失败,总是cURL
给予。0
我认为最好的工作流程是“如果cURL
不打印任何内容,则运行第二行”和“如果cURL
打印某些内容,则不要运行第二行”
我刚刚查看了 linuxif
命令,但仍然不知道如何实现它,因为示例有不同的情况。
答案1
所以你在这里找到了关键,如果curl的输出不同那么你可以测试它。首先,您可以将其定向到一个文件。接下来,您可以利用测试中的 -s 选项:
-s file 如果文件存在且大小大于零,则为真。
这是一些示例代码:
curl -b cookies.txt ... -o /tmp/curl_output
if [ -s /tmp/curl_output ]; then
do failure stuff here
else
do successful stuff here
fi
出于学术原因的另一个实现:
if curl -b cookies.txt ... 2>&1 | grep 'some line from sedut.html' >/dev/null 2>&1; then
do failure stuff here
else
do successful stuff here
fi