将前一天文件发送到unix中的服务器

时间:2013-11-02 21:15:30

标签: linux shell unix

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

  1. 我的脚本将连接到db2数据库并在boxmain
  2. 中生成a.txt文件
  3. a.txt将在生成文件后scp到box1
  4. 在boxmain(a.txt)中生成的文件将在第二天scp到box2,即它将是前一天的boxmain文件的SCP
  5. 注意: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

1 个答案:

答案 0 :(得分:0)

您的问题定义存在轻微问题:在源文件名中使用'/'将使其不仅仅被解释为文件名,还包含包含目录的路径,因为'/'是目录分隔符。使用now=$(date +"%m-%d-%Y")代替now=$(date +"%m/%d/%Y")可能是个好主意。

但要回答你的实际问题,我认为归结为:如何在AIX上从昨天输出日期(1)?

答案来自The UNIX and Linux Forums:只需设置描述您的时区的环境变量,其中包含+24,并且您将从date的输出中获得昨天的日期。

例如:

user @ foo~] #date   Mon Nov 4 09:40:34 EET 2013   user @ foor~]#TZ = EST + 24 date   太阳11月3日07:40:36 2013年

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