
Eu tenho algumas configurações no arquivo config
e gostaria cat
desse arquivo. Porém, às vezes config
não existe. Nesse caso, gostaria que meu comando gerasse um valor padrão.
Talvez algo que funcionasse assim:
$ ls
$ cat config || echo 42
42
$ echo 73 > config
$ cat config || echo 42
73
Responder1
Sua construção está bem. Você poderia até fazer algo como
cat config || cat defaultconfig
Se você usar algum comando aleatório (como o ./get_config_from_web
dos comentários), precisará garantir que o comando forneça um status de retorno sensato. Isso pode ser complicado, os scripts de shell apenas retornam o resultado do último comando executado, você teria que fazer um exit
se quiser algo mais como resultado.
Responder2
O seguinte ecoará 42 para qualquer condição de erro não detectada:
trap "echo 42" ERR
Você pode tornar isso uma variável configurável:
trap 'echo "${CONFIG:=42}"' ERR # if $CONFIG is not set, it will be defaulted to 42
Responder3
if [ -a config ]; then cat config; else echo ${DEFAULT};fi
assumindo que a variável DEFAULT esteja definida para algo de antemão.
Responder4
Você poderia usar o código de saída em uma instrução if:
#!/bin/bash
cat config
if [[ "$?" -ne "0" ]]; then
echo "VALUE"
fi
Se o comando anterior for bem-sucedido, ele sairá com o valor “0”. Então você está dizendo que em qualquer outra saída (falhas) ele produzirá o que estiver em "VALOR".