come faccio a fare riferimento a una variabile nella shell di pesce con un fallback predefinito


Risposte:


10

Credo che tu abbia bisogno della variabile temponaria (o di una funzione). Se $TESTnon esiste, viene espanso a nulla e $test_orcontiene solo 1. Sarebbe bello avere un modo reale di farlo, ma attualmente la sintassi è un problema e non sembra che sia davvero necessario per la maggior parte degli scopi.

set test_or $TEST 1
echo $test_or[1]

Inoltre, se tutto ciò che vuoi è modificare $TESTse non esiste già, puoi usarlo set -q.

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

6

Per fare riferimento a una variabile e fornire un valore predefinito in linea, è possibile utilizzare la sostituzione dei comandi contenente un condizionale che funziona echosu entrambi i rami.

> 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

Poiché questo è un po 'prolisso, è possibile inizializzare la variabile su una riga diversa quando non è impostata.

> echo $otherVar

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

Se si desidera davvero la possibilità di sostituire un valore predefinito in linea, è possibile farlo in una funzione utilizzando il metodo indiretto, quindi chiamare quella funzione.

> 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.