Яка шкаралупа риби еквівалентна наступному башту:
echo ${TEST:-1}
У bash це буде надрукувати значення TEST, якби воно було, або 1, якщо його не було.
Яка шкаралупа риби еквівалентна наступному башту:
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