Самый простой способ - сохранить ответ и сравнить его:
$ 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;
Я думаю, что этот формат часто предпочитают , но лично я считаю его менее читабельным.