0

bash スクリプトのコマンド ライン変数から派生した日付文字列を使用して日付を計算する必要があります。

$1=2013 $2=03 $3=22 のような一連のコマンド ライン引数 (CLA) があり、日付の書式設定された日付文字列を数日前または後の日付で取得したいとします。

私はCLAなしでいつでもできる

    date -d "20130322 -1 day" -u +%Y%m%d

しかし、次のようなことを試みると、

    yyyy=2013
    month=03
    day=22
    yest='"'$yyyy$month$day'" -1 day"'
    yesterday=$(date -d $yest -u +%Y%m%d)

「日付: 無効なオプション -- '1'」というメッセージが表示されます

どこで間違ったのですか?

4

1 に答える 1

1

どうやらあなたは引用符で過剰に結合しました

pwadas@host:~$ echo $(date -d "20130322 -1 day" -u +%Y%m%d)
20130321
pwadas@host:~$ xx=20130322
pwadas@host:~$ echo $(date -d "$xx -1 day" -u +%Y%m%d)
20130321
pwadas@host:~$ 
pwadas@host:~$ yesterday=$(date -d "$xx -1 day" -u +%Y%m%d)
pwadas@host:~$ echo $yesterday
20130321
pwadas@host:~$ 

PS。上記は MacOSX の bash では機能しませんが、Linux では機能します。

于 2013-03-29T16:24:18.510 に答える