Use a expansão do parâmetro padrão interno de bash
:
ipaddr="$(lssyscfg -m 780 -r lpar -F name:state:rmc_ipaddr:os_version --filter lpar_names=ABCD123 | cut -d : -f3)"
echo "${ipaddr:-unknown}"
Primeiro, usamos uma construção de subshell $( command )
para capturar a saída de command
e atribuí-la a uma variável. Como o comando em questão está incluindo seu cut
, ele será corretamente nulo como esperado no caso de seu comando não retornar um endereço IP.
Em seguida, usamos a construção ${var:-default}
, que será expandida para o valor padrão fornecido se var
não estiver definido ou vazio.
Você também pode, se estiver se referindo a essa variável mais de uma vez, usar uma atribuição padrão que também definirá o valor dessa variável para o padrão, se não for definida como vazio:
$ echo "$foo"
$ echo "${foo:=bar}"
bar
$ echo "$foo"
bar
Ou interrompa seu script e envie um erro se não estiver definido ou vazio:
$ echo "${bar:?bar is unset or empty}"
-bash: bar: bar is unset
$ echo $?
1