¿Cuál es la concha de pescado equivalente a la siguiente fiesta?
echo ${TEST:-1}
En bash, esto imprimiría el valor de TEST si hubiera uno, o 1 si no lo hubiera.
¿Cuál es la concha de pescado equivalente a la siguiente fiesta?
echo ${TEST:-1}
En bash, esto imprimiría el valor de TEST si hubiera uno, o 1 si no lo hubiera.
Respuestas:
Creo que necesita una variable temporal (o una función). Si $TEST
no existe, se expande a nada y $test_or
solo contiene 1
. Sería bueno tener una forma real de hacerlo, pero actualmente la sintaxis es un problema, y no parece que sea realmente necesaria para la mayoría de los propósitos.
set test_or $TEST 1
echo $test_or[1]
Además, si todo lo que desea es modificar $TEST
si aún no existe, puede usarlo set -q
.
set -q TEST; or set TEST 1
echo $TEST
Para hacer referencia a una variable y proporcionar un valor predeterminado en línea, puede usar la sustitución de comandos que contiene un condicional que lo hace echo
en ambas ramas.
> 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
Dado que esto es algo detallado, puede inicializar la variable en una línea diferente cuando no está establecida.
> echo $otherVar
> set -q otherVar; or set otherVar 'a default value'
> echo $otherVar
a default value
Si realmente desea la capacidad de sustituir una línea predeterminada, puede hacerlo en una función utilizando la indirección y luego llamar a esa función.
> 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