Sorun Bash her komutu tek çıkış kodu olmasıdır. Ne zaman size export foo="$(false)"çıkış kodu falsebasitçe atılır. Eğer yerine
foo="$(false)"
export foo
başarısız olan ilk komut, örneğin errexitayar ile harekete geçirilebilir .
Bir dize değişmez olarak bildirmek ve atamak export foo='bar'elbette bu sorundan muzdarip değildir. Ancak değişim, yazılım geliştirmedeki tek değişmezdir ve bu tür ifadeleri bölüştürerek geleceğe dönük olarak korumada fayda vardır.
Söz ettiğiniz atamaya özel komutlara ek olarak, örneğin tek bir ödevde birden çok komut vardır foo="$(false)$(true)". Bkz pipefailiçinde man bashbir başka tür tuzak için.
Unutulmaması gereken bir başka şey, beyan ve görev dizisinin bazen ilgili olduğudur. Örneğin, değişkenleri atamadan önce bildirmek isteyeceksiniz . (Ne yazık ki, değişkenleri ilk defa atamadan önce bildirmek mümkün değildir .)local readonly