Como faço para referenciar uma variável no shell de peixes com um fallback padrão


Respostas:


10

Eu acredito que você precisa de variável temporária (ou uma função). Se $TESTnão existir, é expandido para nada e $test_orconté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 $TESTse já não existe, você pode usá-lo set -q.

set -q TEST; or set TEST 1
echo $TEST

6

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 echonos 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.