W poprzednim wpisie pokazałem kilka przydatnych flag do curla. Jednak jeżeli chcemy uruchamiać go w powłoce warto i do niej dodać kilka opcji, aby zachowanie było zgodne z intuicją.
-u
Domyślnie jeśli jakaś zmienna nie jest zdefiniowana próba odwołania się do niej zwraca pustą wartość. Nie zawsze jest to działanie zamierzone gdyż zwykła literówka może nas kosztować godziny debugowania skryptu.
|
|
-e
Ta flaga zapewnia, że skrypt natychmiast się zakończy jeśli któraś komenda zwróci błąd. Domyślnie jeśli coś pójdzie nie tak nasz program pójdzie dalej. Jest to dość ważne w przypadku skryptów bo w najgorszym przypadku wszystko będzie wyglądało OK a jednak jakaś część programu wykona się niepoprawnie.
|
|
-o pipefail
O ile -e przerywa skrypt po błędzie to ignoruje ona błędy podczas procesowania potoku. A to znaczy, że jeśli któryś element potoku zwróci kod różny od 0 to i tak dostaniemy kod ostatniego polecenia.
|
|
-x
Czasem potrzebujemy debugować nasz skrypt. Wtedy -x
jest idealnym rozwiązaniem. Przed wykonaniem każda komenda zostanie wyświetlona wraz z rozwiniętymi zmiennymi. Każdy wpis debugowania dostanie prefiks +
aby można go było łatwo odróżnić od wyjścia z programu.
#!/bin/bash
set -x
URL=detektywi.it
curl $URL
> + URL=detektywi.it
> + curl detektywi.it
TLDR
set -euxo pipefail