como faço referência a uma variável no fish shell com um fallback padrão

13

O que é o fish shell equivalente ao seguinte bash:

echo ${TEST:-1}

No bash isso imprimiria o valor de TEST se houvesse um, ou 1 se não houvesse.

    
por Scott B 02.07.2013 / 01:14

2 respostas

7

Eu acredito que você precisa de variável temporária (ou uma função). Se $TEST não existir, será expandido para nada e $test_or conterá apenas 1 . Seria bom ter uma maneira real de fazer isso, mas atualmente a sintaxe é um problema, e não parece ser realmente necessário para a maioria das finalidades.

set test_or $TEST 1
echo $test_or[1]

Além disso, se tudo o que você deseja é modificar $TEST , se ele ainda não existir, use set -q .

set -q TEST; or set TEST 1
echo $TEST
    
por 29.08.2013 / 13:46
6

Para fazer referência a uma variável e fornecer um valor padrão in-line, você pode usar a substituição de comando que contém uma condição que faz echo em ambas as ramificações.

> 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 esse é um tipo de verbose, você pode inicializar a variável em uma linha diferente quando ela não estiver definida.

> echo $otherVar

> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value

Se você realmente quiser a capacidade de substituir um padrão in-line, você pode fazê-lo em uma função usando o modo indireto 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
    
por 16.05.2015 / 23:04

Tags