
Tengo alguna configuración en el archivo config
y me gustaría cat
ese archivo. Sin embargo, a veces config
no existe. En este caso, me gustaría que mi comando genere un valor predeterminado.
Quizás algo que funcionó así:
$ ls
$ cat config || echo 42
42
$ echo 73 > config
$ cat config || echo 42
73
Respuesta1
Tu construcción está bien. Incluso podrías hacer algo como
cat config || cat defaultconfig
Si usa algún comando aleatorio (como el ./get_config_from_web
de los comentarios), deberá asegurarse de que el comando proporcione un estado de retorno sensato. Eso puede ser complicado, los scripts de shell simplemente devuelven el resultado del último comando ejecutado, tendrías que hacer un exit
si quieres algo más como resultado.
Respuesta2
Lo siguiente hará eco de 42 para cualquier condición de error no detectada:
trap "echo 42" ERR
Puedes hacer de esto una variable configurable:
trap 'echo "${CONFIG:=42}"' ERR # if $CONFIG is not set, it will be defaulted to 42
Respuesta3
if [ -a config ]; then cat config; else echo ${DEFAULT};fi
suponiendo que la variable DEFAULT esté configurada en algo de antemano.
Respuesta4
Podrías usar el código de salida en una declaración if:
#!/bin/bash
cat config
if [[ "$?" -ne "0" ]]; then
echo "VALUE"
fi
Si el comando anterior tiene éxito, saldrá con un valor "0". Entonces le está diciendo que en cualquier otra salida (falla) generará lo que esté en el "VALOR".