Co to jest skorupka rybna równoważna następującemu uderzeniu:
echo ${TEST:-1}
W bashu wypisuje wartość TEST, jeśli istnieje, lub 1, jeśli nie ma.
Co to jest skorupka rybna równoważna następującemu uderzeniu:
echo ${TEST:-1}
W bashu wypisuje wartość TEST, jeśli istnieje, lub 1, jeśli nie ma.
Odpowiedzi:
Uważam, że potrzebujesz zmiennej tymczasowej (lub funkcji). Jeśli $TEST
nie istnieje, jest rozwinięty do zera i $test_or
zawiera tylko 1
. Byłoby miło mieć na to sposób, ale obecnie składnia jest problematyczna i nie wydaje się, żeby była naprawdę potrzebna do większości celów.
set test_or $TEST 1
echo $test_or[1]
Ponadto, jeśli wszystko, co chcesz, to zmodyfikować, $TEST
jeśli jeszcze nie istnieje, możesz użyć set -q
.
set -q TEST; or set TEST 1
echo $TEST
Aby odwołać się do zmiennej i podać wartość domyślną w linii, możesz użyć podstawienia polecenia zawierającego warunek, który działa echo
na obu gałęziach.
> 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
Ponieważ jest to rodzaj gadatliwy, można zainicjować zmienną w innym wierszu, gdy jest ona rozbrojona.
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
Jeśli naprawdę chcesz mieć możliwość zastąpienia domyślnego wbudowanego, możesz to zrobić w funkcji za pomocą pośredniej, a następnie wywołać tę funkcję.
> 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