как сделать так, чтобы запрос curl не нарушался в bash-скрипте?

307
Sk Sk

В скрипте bash я хочу сделать запрос curl, чтобы пользователь не беспокоил.

trap "cleanup" 1 2 3 13 15  TMP_OUT=$(curl -H "Content-Type: application/json" -X POST -d "$DATA" "$:$"'/main/store' 2>/dev/null &) wait $! if [ $? -ne 0 ] then fatal "Something went wrong connecting to the service." fi 

Как сделать так, чтобы служба не работала? Ожидание возвращается, 0даже если rc из запроса curl 7и сценарий продолжается, что не должно происходить.

0
Попытка выполнить фоновые команды внутри `$ ()` на самом деле не работает, потому что нужно подождать, пока они закончат, чтобы захватить их вывод. Что вы на самом деле пытаетесь достичь, и что вы подразумеваете под «что пользователь не должен мешать»? Gordon Davisson 5 лет назад 0

1 ответ на вопрос

0
Attie

Попробуйте что-то вроде этого:

TMP="$(mktemp)"  curl ifconfig.co 2>/dev/null >"$" &  wait $! echo $?  read MY_IP < "$" rm "$" unset TMP  echo $ 

По сути, вам нужно сохранить интересный процесс как прямое потомство « этой » оболочки.

Здесь мы перенаправляем его вывод во временный файл и принимаем его позже, используя read.

спасибо за быстрый ответ, вроде работает, но у меня есть: wait: pid 1541 не является потомком этой оболочки Sk Sk 5 лет назад 0