Qual è la conchiglia di pesce equivalente alla seguente bash:
echo ${TEST:-1}
In bash questo stampa il valore di TEST se ce n'era uno, o 1 se non lo fosse.
Qual è la conchiglia di pesce equivalente alla seguente bash:
echo ${TEST:-1}
In bash questo stampa il valore di TEST se ce n'era uno, o 1 se non lo fosse.
Risposte:
Credo che tu abbia bisogno della variabile temponaria (o di una funzione). Se $TEST
non esiste, viene espanso a nulla e $test_or
contiene 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 $TEST
se non esiste già, puoi usarlo set -q
.
set -q TEST; or set TEST 1
echo $TEST
Per fare riferimento a una variabile e fornire un valore predefinito in linea, è possibile utilizzare la sostituzione dei comandi contenente un condizionale che funziona echo
su 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