Как я могу ссылаться на переменную в оболочке рыбы с запасной вариант по умолчанию

Ответы:

10

Я считаю, что вам нужна временная переменная (или функция). Если $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
Конрад Боровски
источник
6

Чтобы ссылаться на переменную и предоставлять значение по умолчанию в строке, вы можете использовать подстановку команд, содержащую условие, которое действует 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
Патрик Редмонд
источник