CURL używany w powłoce

1

Wykonuję skrypt powłoki, w którym obecne jest jedno polecenie curl. Muszę przechowywać dane wyjściowe polecenia curl (format xml) w pliku i wyświetlić wynik na ekranie. Aby tak się stało, po zawinięciu za pomocą potoku używane jest „polecenie tee”. Muszę sprawdzić, czy polecenie curl działa poprawnie, czy nie. Użyłem $? ale przyjmuje status wyjścia polecenia tee. Użyłem PIPESTATUS [0] i ustawiłem -o pipefail, ale nie działałem dla curl. Jak sprawdzić, czy polecenie curl działa poprawnie, czy nie? Jak przechowywać status wyjścia polecenia curl w zmiennej? To tylko kod demonstracyjny.

curl output | tee -a filename

Chcę poznać status wyjścia curl

samfisher
źródło

Odpowiedzi:

1

Użyj zmiennej $ PIPESTATUS var, która jest tablicą. Poniżej otrzymasz kod powrotu polecenia potokowego.

curl output | tee -a filename
echo ${PIPESTATUS[0]}
Aditya Patawari
źródło
+1, ale wymaga ostrzeżenia bash .
Jan Hudec
0

Możesz użyć następującej konstrukcji:

content=`curl http://www.google.com`
if [[ $? -ne 0 ]]; then 
  # do some fail stuff
else
  echo '$content' | tee /tmp/output.file
fi

Przechowuje wyjście curl w zmiennej, a następnie sprawdza status wyjścia, a jeśli się powiedzie, przetwórz wyjście do pliku (i standardowego wyjścia).

mtak
źródło
Echo? brak cytatów? na czymś otrzymanym z sieci? poważnie? -1.
Jan Hudec
@ JanHudec Masz rację co do cytatów, zakładałem, że wyciągnie coś ze strony, której ufa (zredagowałem post). Mile widziane jest zredagowanie mojej odpowiedzi, abyśmy wszyscy mogli uczyć się z twojej mądrości
mtak