Quelle est la coquille de poisson équivalente à la bash suivante:
echo ${TEST:-1}
En bash, cela afficherait la valeur de TEST s'il y en avait un, ou 1 s'il n'y en avait pas.
Quelle est la coquille de poisson équivalente à la bash suivante:
echo ${TEST:-1}
En bash, cela afficherait la valeur de TEST s'il y en avait un, ou 1 s'il n'y en avait pas.
Réponses:
Je crois que vous avez besoin d'une variable temponaire (ou d'une fonction). S'il $TEST
n'existe pas, il est étendu à rien et $test_or
ne contient que 1
. Ce serait bien d'avoir un vrai moyen de le faire, mais actuellement la syntaxe est un problème, et il ne semble pas que ce soit vraiment nécessaire pour la plupart des utilisations.
set test_or $TEST 1
echo $test_or[1]
De plus, si tout ce que vous voulez, c'est modifier $TEST
s'il n'existe pas déjà, vous pouvez utiliser set -q
.
set -q TEST; or set TEST 1
echo $TEST
Pour référencer une variable et fournir une valeur par défaut en ligne, vous pouvez utiliser une substitution de commande contenant un conditionnel qui s'applique echo
aux deux branches.
> 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
Comme il s'agit d'une sorte de verbose, vous pouvez initialiser la variable sur une ligne différente lorsqu'elle n'est pas définie.
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
Si vous voulez vraiment pouvoir remplacer une ligne par défaut, vous pouvez le faire dans une fonction en utilisant l'indirection, puis appeler cette fonction.
> 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