Что такое рыбий панцирь, эквивалентный следующему bash:
echo ${TEST:-1}
В bash это выведет значение TEST, если оно было, или 1, если его не было.
Что такое рыбий панцирь, эквивалентный следующему bash:
echo ${TEST:-1}
В bash это выведет значение TEST, если оно было, или 1, если его не было.
Ответы:
Я считаю, что вам нужна временная переменная (или функция). Если $TEST
не существует, он расширяется до нуля и $test_or
содержит только 1
. Было бы неплохо иметь реальный способ сделать это, но в настоящее время синтаксис является проблемой, и не кажется, что он действительно нужен для большинства целей.
set test_or $TEST 1
echo $test_or[1]
Кроме того, если все, что вам нужно, это изменить, $TEST
если он еще не существует, вы можете использовать set -q
.
set -q TEST; or set TEST 1
echo $TEST
Чтобы ссылаться на переменную и предоставлять значение по умолчанию в строке, вы можете использовать подстановку команд, содержащую условие, которое действует echo
в обеих ветвях.
> 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
Поскольку это довольно многословно, вы можете инициализировать переменную в другой строке, когда она не установлена.
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
Если вы действительно хотите иметь возможность заменить встроенное значение по умолчанию, вы можете сделать это в функции с помощью косвенного обращения, а затем вызвать эту функцию.
> 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