Comando Date para produzir nulo / nada quando a variável fornecida tiver valor vazio

0

Como um comando date gerará nulo / nada quando a variável fornecida não tiver valor / nulo. Eu sei que if else declaração pode fazer isso, mas eu meio que acho que não é o jeito certo. Existe um comando decente ou alterações no comando date para fazer isso?

Por exemplo,

myDay=""
bDay='date -d "$myDay"'
echo "$bDay" // this should have no output
    
por WashichawbachaW 31.10.2018 / 12:54

1 resposta

2

Você poderia fazer:

bDay=${myDay:+$(date -d "$myday")}

ou:

if [ -n "$myDay" ]; then
  bDay=$(date -d "$myDay")
else
  bDay=
fi

ou:

bDay=$([ -z "$myDay" ] || date -d "$myDay")

ou (com uma mensagem de erro se $myDay estiver vazio):

bDay=$(date -d "${myDay:?no date supplied}")

Observe que echo (exceto csh ' echo ) sempre exibe pelo menos um caractere de nova linha (a menos que você use -n ou \c dependendo da implementação echo ), mesmo quando não passou qualquer argumento, então você também precisa:

[ -z "$bDay" ] || echo "$bDay"

por não exibir nada quando $bDay estiver vazio.

    
por 31.10.2018 / 12:59

Tags