Respostas:
Eu acredito que você precisa de variável temporária (ou uma função). Se $TEST
não existir, é expandido para nada e $test_or
contém apenas 1
. Seria bom ter uma maneira real de fazer isso, mas atualmente a sintaxe é um problema e não parece que seja realmente necessária para a maioria dos propósitos.
set test_or $TEST 1
echo $test_or[1]
Além disso, se tudo o que você deseja é modificar $TEST
se já não existe, você pode usá-lo set -q
.
set -q TEST; or set TEST 1
echo $TEST
Para fazer referência a uma variável e fornecer um valor padrão em linha, você pode usar a substituição de comandos que contém uma condicional que ocorre echo
nos dois ramos.
> 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
Como isso é meio detalhado, você pode inicializar a variável em uma linha diferente quando não estiver definida.
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
Se você realmente deseja a capacidade de substituir um padrão em linha, pode fazê-lo em uma função usando indiretamente e, em seguida, chamar essa função.
> 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