varsayılan geri dönüş ile balık kabuğundaki bir değişkene nasıl başvurabilirim


Yanıtlar:


10

Temponary değişkenine (veya bir fonksiyona) ihtiyacınız olduğuna inanıyorum. Eğer $TESTyoksa, hiçbir şeye genişletilmez ve $test_orsadece 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 $TESTzaten mevcut değilse değiştirmekse , kullanabilirsiniz set -q.

set -q TEST; or set TEST 1
echo $TEST

6

Bir değişkene başvuruda bulunmak ve satır içi varsayılan bir değer sağlamak echoiç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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.