我的主程序采用具有日期和时间格式的时间戳,以逗号分隔,但它仍然是一个字符串和一个参数:
#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\""