将日期参数连接成一个字符串

将日期参数连接成一个字符串

我的主程序采用具有日期和时间格式的时间戳,以逗号分隔,但它仍然是一个字符串和一个参数:

#source main.sh '2015-02-10 00:00:00'

现在,我想通过运行以下脚本自动为程序提供时间戳。我的问题是,我应该保留日期和时间之间的空格,并且第一行的输出或 TIMESTAMP 的值是两个参数,一个用于日期,另一个用于时间,这与传递给 main.sh 的允许参数数量相矛盾。

TIMESTAMP=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
COMMAND=${TARGET}" "${TIMESTAMP}
#source $COMMAND
echo $TIMESTAMP

输出为:

   2015-02-04 15:55:50

有没有办法将日期和 TIMESTAMP 的时间合并为一个参数?请注意,我应该保留时间和日期之间的空格。

答案1

更新

请尝试以下代码片段:

TIMESTAMP=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
source $TARGET "$TIMESTAMP"

为了避免引用你的 TIMESTAMP 参数,为什么不使用iso8601 T分隔符?

日期和时间可以是一个字符串:2014-02-04T13:49:40

您可以使用以下格式作为日期输入:

$ date --date='2014-02-04T13:49:40' 
Tue Feb  4 13:49:40 CET 2014

如果您的目标脚本只能理解带有空格的日期时间,请按以下方式存储:

TIMESTAMP="$(printf "%q" "$(date --date='40 days ago' '+%F %T')")"

该空间将被转义:

$ echo $TIMESTAMP
2015-02-04\ 14:04:51

或者,你可以像这样转义引号:

COMMAND="$TARGET \"$TIMESTAMP\""

相关内容