วิธีที่ง่ายที่สุดคือจัดเก็บการตอบกลับและเปรียบเทียบ:
$ response=$(curl -X POST -d@myfile.txt server-URL);
$ if [ "Upload successful" == "${response}" ]; then … fi;
ฉันยังไม่ได้ทดสอบ ไวยากรณ์อาจปิดอยู่ แต่นั่นเป็นความคิด ฉันแน่ใจว่ามีวิธีการที่ซับซ้อนกว่านี้เช่นการตรวจสอบรหัสออกของ curl หรือบางสิ่งบางอย่าง
ปรับปรุง
curl
ส่งคืนรหัสออกบางส่วน ฉันเดาว่าโพสต์ที่ล้มเหลวอาจส่งผล55 Failed sending network data.
ให้คุณอาจตรวจสอบให้แน่ใจว่ารหัสออกเป็นศูนย์โดยเปรียบเทียบกับ$?
( Expands to the exit status of the most recently executed foreground pipeline.
):
$ curl -X POST -d@myfile.txt server-URL;
$ if [ 0 -eq $? ]; then … fi;
หรือหากคำสั่งของคุณค่อนข้างสั้นและคุณต้องการทำบางสิ่งเมื่อมันล้มเหลวคุณสามารถพึ่งพาโค้ดทางออกเป็นเงื่อนไขในคำสั่งเงื่อนไข:
$ if curl --fail -X POST -d@myfile.txt server-URL; then
# …(success)
else
# …(failure)
fi;
ฉันคิดว่ารูปแบบนี้มักเป็นที่นิยมแต่โดยส่วนตัวแล้วฉันคิดว่ามันอ่านง่ายกว่า