Forneça o valor padrão se o comando retornar com código de saída diferente de zero

Forneça o valor padrão se o comando retornar com código de saída diferente de zero

Eu tenho algumas configurações no arquivo confige gostaria catdesse arquivo. Porém, às vezes confignã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_webdos 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 exitse 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".

informação relacionada