Bash를 사용하여 타임스탬프를 에포크로 변경하면 추가 피연산자와 같은 오류가 발생합니다.

Bash를 사용하여 타임스탬프를 에포크로 변경하면 추가 피연산자와 같은 오류가 발생합니다.

Bash 스크립트에 다음과 같이 변수를 정의했습니다.

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

이를 epoch로 변환 한 date다음 .echoecho $(date -d $BIRTHDAY +%s)

그러나 오류가 발생합니다: date: extra operand ‘+08:00’.

그러나 bash 대화형 셸에서는 실행할 수 있습니다.

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

나는 또한 달리기를 시도했지만 echo $(date -d \"$BIRTHDAY\" +%s)그것도 효과가 없었습니다.

그럼, 이게 뭐가 문제야?

답변1

다음과 같은 견적이 필요합니다 "$BIRTHDAY".

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

실제로 zsh를 대화형 쉘로 사용하고 있는 것으로 보입니다. 이는 이 명령이 작동하는 유일한 쉘이기 때문입니다(기본 IFS 값 사용).

date -d $BIRTHDAY +%s

어쨌든 zsh에서도 변수를 인용하면 도움이 됩니다.

date -d "$BIRTHDAY" +%s

관련 정보