Apa yang setara dengan kulit ikan dengan bash berikut:
echo ${TEST:-1}
Dalam bash ini akan mencetak nilai TEST jika ada, atau 1 jika tidak.
Apa yang setara dengan kulit ikan dengan bash berikut:
echo ${TEST:-1}
Dalam bash ini akan mencetak nilai TEST jika ada, atau 1 jika tidak.
Jawaban:
Saya percaya Anda perlu variabel temponary (atau fungsi). Jika $TEST
tidak ada, itu diperluas menjadi tidak ada, dan $test_or
hanya berisi 1
. Akan menyenangkan untuk memiliki cara nyata untuk melakukan itu, tetapi saat ini sintaksisnya adalah masalah, dan tampaknya tidak benar-benar diperlukan untuk sebagian besar tujuan.
set test_or $TEST 1
echo $test_or[1]
Juga, jika yang Anda inginkan adalah memodifikasi $TEST
jika belum ada, Anda dapat menggunakannya set -q
.
set -q TEST; or set TEST 1
echo $TEST
Untuk referensi variabel dan memberikan nilai default in-line, Anda dapat menggunakan substitusi perintah yang berisi kondisi yang dilakukan echo
di kedua cabang.
> 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
Karena ini semacam verbose, Anda bisa menginisialisasi variabel pada baris yang berbeda ketika tidak disetel.
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
Jika Anda benar-benar ingin kemampuan untuk menggantikan in-line default, Anda dapat melakukannya dalam suatu fungsi menggunakan tipuan, dan kemudian memanggil fungsi itu.
> 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