Aşağıdaki bash'a eşdeğer balık kabuğu nedir :
echo ${TEST:-1}
Bash'da bu, eğer varsa, TEST değerini veya yoksa 1 değerini yazdıracaktır.
Aşağıdaki bash'a eşdeğer balık kabuğu nedir :
echo ${TEST:-1}
Bash'da bu, eğer varsa, TEST değerini veya yoksa 1 değerini yazdıracaktır.
Yanıtlar:
Temponary değişkenine (veya bir fonksiyona) ihtiyacınız olduğuna inanıyorum. Eğer $TEST
yoksa, hiçbir şeye genişletilmez ve $test_or
sadece içerir 1
. Bunu yapmanın gerçek bir yoluna sahip olmak güzel olurdu, ancak şu anda sözdizimi bir sorundur ve çoğu amaç için gerçekten gerekli görünmemektedir.
set test_or $TEST 1
echo $test_or[1]
Ayrıca, istediğiniz tek şey $TEST
zaten mevcut değilse değiştirmekse , kullanabilirsiniz set -q
.
set -q TEST; or set TEST 1
echo $TEST
Bir değişkene başvuruda bulunmak ve satır içi varsayılan bir değer sağlamak echo
için her iki dalda da bulunan bir koşul içeren komut ikamesi kullanabilirsiniz .
> echo (if set -q someVar; echo $someVar; else; echo 'a default value'; end)
a default value
> set someVar 42
> echo (if set -q someVar; echo $someVar; else; echo 'a default value'; end)
42
Bu bir tür ayrıntı olduğundan, değişmediğinde değişkeni farklı bir satırda başlatabilirsiniz.
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
Gerçekten varsayılan bir satır içi değiştirme yeteneğini kullanmak istiyorsanız, bunu dolaylı işlev kullanarak bir işlevde yapabilir ve ardından bu işlevi çağırabilirsiniz.
> function orDefault
set -q $argv[1]; and echo $$argv[1]; or echo $argv[2]
end
>
> echo $moreVar
> echo (orDefault moreVar 'a default value')
a default value
> set moreVar 42
> echo (orDefault moreVar 'a default value')
42