シェルを使ってyyyymmdd形式の変数をunixtimeに変換したい。


シェルを使ってyyyymmdd形式の変数をunixtimeに変換したい。

起きてる問題として変数に格納するとエラーが発生します。

[code]

    date +%s --date "2005-01-01 00:00"
    結果
    1104505200
    
[/code]

直のstringならエラーは起きないが、変数だとエラーが出る。

[code]

    unitime='2005-01-01 00:00'
    date +%s --date $unitime
    結果
    date: extra operand ‘00:00’
    Try 'date --help' for more information.
    
[/code]

## やりたいこと「yyyymmddhhmm」の文字列をunixtimeに変換

[code]

    unitime='202003020000'
    date +%s --date $unitime
    結果
    date: invalid date ‘202003020000’
    
[/code]

この結果から、どうもフォーマッティング関数が必要なので探しているのですが見つかりません。  
お詳しい方いましたらご助力お願いします。




「--date」に与える引数が空白を挟んで分割されて「--date
2005-01-01」と「00:00」と別れて解釈されているのが原因です。日付文字列をダブルクォーテーションで囲んであげれば良いと思います。

[code]

    unitime='2005-01-01 00:00' ; date +%s --date "$unitime"
    1104505200
    
[/code]




「--date」に与える引数が空白を挟んで分割されて「--date
2005-01-01」と「00:00」と別れて解釈されているのが原因です。日付文字列をダブルクォーテーションで囲んであげれば良いと思います。

[code]

    unitime='2005-01-01 00:00' ; date +%s --date "$unitime"
    1104505200
    
[/code]

