Wie kann man Curl-Anfragen in einem Bash-Skript ungestört machen?

366
Sk Sk

In einem Bash-Skript möchte ich eine Curl-Anfrage stellen, die den Benutzer nicht stören soll.

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 

Wie mache ich das, wenn der Dienst nicht funktioniert? Das Warten kehrt 0auch dann zurück, wenn der Befehl rc aus der curl-Anforderung ist 7und das Skript fortgesetzt wird. Dies sollte nicht passieren.

0
Der Versuch, Hintergrundbefehle in `$ ()` zu versuchen, funktioniert nicht wirklich, da er warten muss, bis die Ausgabe abgeschlossen ist. Was wollen Sie eigentlich erreichen und was meinen Sie damit "dass der Benutzer nicht stören sollte"? Gordon Davisson vor 5 Jahren 0

1 Antwort auf die Frage

0
Attie

Versuchen Sie etwas so:

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

Grundsätzlich müssen Sie den interessanten Prozess als direktes Kind dieser Shell beibehalten.

Hier leiten wir die Ausgabe in eine temporäre Datei um und nehmen sie später mit auf read.

danke für die prompte antwort, es scheint zu funktionieren, aber ich habe: wait: pid 1541 ist kein kind dieser shell Sk Sk vor 5 Jahren 0