Как сделать так, чтобы запрос curl не нарушался в bash-скрипте?
В скрипте bash я хочу сделать запрос curl, чтобы пользователь не беспокоил.
trap "cleanup" 1 2 3 13 15
TMP_OUT=$(curl -H "Content-Type: application/json" -X POST -d "$DATA" "${HOST}:${PORT}"'/main/store' 2>/dev/null &)
wait $!
if [ $? -ne 0 ]
then
fatal "Something went wrong connecting to the service."
fi
Как сделать так, чтобы служба не работала? Ожидание возвращается 0
даже когда rc из запроса curl 7
и сценарий продолжается, чего не должно быть.
1 ответ
Попробуйте что-то вроде этого:
TMP="$(mktemp)"
curl ifconfig.co 2>/dev/null >"${TMP}" &
wait $!
echo $?
read MY_IP < "${TMP}"
rm "${TMP}"
unset TMP
echo ${MY_IP}
По сути, вам нужно сохранить интересный процесс как прямое потомство "этой" оболочки.
Здесь мы перенаправляем его вывод во временный файл и принимаем его позже, используя read
,