0

我正在开发一个 shell 脚本来 scp a.txt 到不同的服务器(box1 和 box2),并且脚本在 boxmain 服务器中运行。以下是要求,

  1. 我的脚本将连接到 db2 数据库并在 boxmain 中生成 a.txt 文件
  2. 生成文件后,a.txt 将被 scp'ed 到 box1
  3. boxmain(a.txt)中生成的文件会在第二天scp'ed到box2,即是前一天boxmain文件的SCP

注意:box1,box2,boxmain 是服务器

我尝试了以下,能够完成前 2 个任务,但卡在第 3 个。请建议如何实现第三点。提前致谢。

db2 -tvf query.sql #creates a.txt
scp a.txt user@box1:/root/a.txt

now=$(date +"%m/%d/%Y")
cp a.txt a_$now.txt

我的操作系统版本是 AIX test 1 6

4

1 回答 1

0

您的问题定义存在一个小问题:在源文件名的名称中使用“/”将使其不仅被解释为文件名,而且还被解释为包含目录的路径,因为“/”是目录分隔符。使用now=$(date +"%m-%d-%Y")而不是now=$(date +"%m/%d/%Y").

但是要回答您的实际问题,我认为可以归结为:如何让 date(1) 在 AIX 上输出昨天的日期?

答案是从UNIX 和 Linux 论坛中找到的:只需将描述您的时区的环境变量设置为其中包含 +24,您就会从date.

例如:

user@foo ~]# 日期 Mon Nov 4 09:40:34 EET 2013 user@foo ~]# TZ=EST+24 date Sun Nov 3 07:40:36 EST 2013

将此应用于您的问题,只需在运行now=$(date +"%m/%d/%Y")ie 时为 TZ 设置适当的值。使用now=$(TZ=ZONE+24 date +"%m-%d-%Y")(注意路径分隔符上的更正,并将 ZONE 替换为您自己的时区)。

于 2013-11-04T07:46:17.950 回答