28 Eylül 2021 Salı

bash kodlama $? gömülü değişkeni - Return Value

Giriş
Son çalıştırılan komutun exit status değerini verir.

Bu değişkeni Kullanmamak
Açıklaması şöyle
SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?.
Bir uygulamayı çalıştırıp döndürdüğü sonucu almak için şu yol izlenebilir
utility

# shellcheck disable=SC2181
if [ "$?" -eq 0 ]; then
    echo ok
else
    echo fail
fi
Ancak şöyle yapmak daha kolay
if utility; then
    echo ok
else
    echo fail
fi
Kullanma Örnekleri
Örnek
Şöyle yaparız.
another_script.sh
exit_code=$?
Örnek
Şöyle yaparız.
grep -q '/example.com' /opt/nfs || grep -Rq '/example.com' /data
if [ $? -eq 0 ]; then   # check exit status
  echo "Passed"
else 
  echo "Failed"
fi
Örnek
set -e ile ilk hata da bash'in devam etmemesi sağlanır. Ancak bazı komutların 0'dan farklı bir şey dönmesi durumunda şöyle yaparız. Böylece set -e dikkate alınmaz.
#!/usr/bin/env bash
set -e
! docker stop foo
! docker rm -f foo
# ... other stuff

Hiç yorum yok:

Yorum Gönder