11

私はbashとshellを初めて使用しますが、debianインストールを実行しており、追加のパッケージをインストールしなくても過去の日付を見つけることができるスクリプトを作成しようとしています。チュートリアルから、私はこの段階に到達しました:

#!/bin/sh
#
# BACKUP DB TO S3
#

# VARIABLES
TYPE="DATABASE"
DAYS="30"

# GET CURRENT DATETIME
CURRENTDATE="$(date +%Y%m%d%H%M%S)"

# GENERATE PAST DATE FROM DAYS CONTSTANT
OLDERDATE=`expr $CURRENTDATE - $DAYS'

# CALL PYTHON SCRIPT WITH OLDERDATE ARGUMENT
python script.py $OLDERDATE

私が行き詰まっているのは、私の「日」が30であり、日時がフォーマットされていないという事実です。したがって、currentdate変数からマイナスにすると、明らかに互換性がありません。

誰かが私がこれを正常に機能させる方法を見つけるのを手伝ってくれるほど親切ですか?

4

4 に答える 4

21

試す

date -d '30 days ago'

Debianで行う必要があります。

于 2013-01-19T17:33:48.007 に答える
12

これをやってみてください:

#!/bin/sh
#
# BACKUP DB TO S3
#

# VARIABLES
TYPE="DATABASE"
DAYS="30"

# GET CURRENT DATETIME
CURRENTDATE="$(date +%Y%m%d%H%M%S)"

# GENERATE PAST DATE FROM DAYS CONSTANT
OLDERDATE="$(date "+%Y%m%d%H%M%S" -d "$DAYS days ago")"

# CALL PYTHON SCRIPT WITH OLDERDATE ARGUMENT
python script.py "$OLDERDATE"

見るinfo coreutils 'date invocation' | less +/28.7\ Relative\ items\ in\ date\ strings

于 2013-01-19T17:33:52.050 に答える
0

代わりに python スクリプトを変更することもできます。そうすれば、特定の実装に依存しなくなります。date

于 2013-01-19T17:38:04.237 に答える