Rozważ następujący kod
external-scope.sh
#!/bin/bash
set -e
source inner-scope.sh
echo $(inner)
echo "I thought I would've died :("
inner-scope.sh
#!/bin/bash
function inner() { echo "winner"; return 1; }
Próbuję outer-scope.sh
wyjść, gdy połączenie się inner()
nie powiedzie. Ponieważ $()
wywołuje podpowłokę, tak się nie dzieje.
Jak inaczej uzyskać wynik działania funkcji, zachowując fakt, że funkcja może wyjść z niezerowym kodem wyjścia?