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

関連情報