Altera um timestamp para epoch use Bash obtém erro como operando extra

0

Eu defino uma variável no meu script Bash como:

BIRTHDAY="1993-01-11 11:11 +08:00"

e convertê-lo em epoches use date , em seguida, echo com echo $(date -d $BIRTHDAY +%s) .

No entanto, recebo um erro: date: extra operand ‘+08:00’ .

Mas funciona em um shell interativo bash:

➜  ~ BIRTHDAY="1993-01-11 11:11 +08:00"
➜  ~ date -d $BIRTHDAY +%s
726721860
➜  argos echo $(date -d $BIRTHDAY +%s)
726721860

Eu também tento executar echo $(date -d \"$BIRTHDAY\" +%s) , que também não funciona.

Então, o que há de errado com isso?

    
por roachsinai 30.08.2018 / 03:34

1 resposta

5

Você precisa citar "$BIRTHDAY" , assim:

echo $(date -d "$BIRTHDAY" +%s)

Parece que você está realmente usando o zsh como o shell interativo, já que é o único em que esse comando funcionará corretamente (com um valor padrão do IFS):

date -d $BIRTHDAY +%s

Em qualquer caso, mesmo em zsh, citar a variável é útil:

date -d "$BIRTHDAY" +%s
    
por 30.08.2018 / 04:02