关于shell脚本except中的时间变量解决方法

关于shell脚本except中的时间变量解决方法
脚本
#!/usr/bin/expect -f

 set timeout 100

spawn scp pi@133.2.186.95:/home/pi/light_sensor/20170724.txt /home/slabuser/agugamma/data

expect {
  "(yes/no)?"
  {
    send "yes\n"
    expect "*asswrod:" { send 12345678\n }
  }
  "*assword:"
  {
    send 12345678\n
  }
}
expect "100%"
expect eof

这是一个将树莓派(电脑)上的文件复制到当前电脑的一个脚本。由于exceptbash的写法不同,很容易出错,特别是日期时间变量。
由于每天文件都在更新,如何将20170724这个日期,变成今天或者昨天的日期,以方便通过crontab -e实现每天自动复制新文件。
如果是修改为今天的日期只需要写入(maxos,linux皆可)
set today_date [exec date "+%Y%m%d"]
或者set today_date [exec date +%Y%m%d]
然后将20170724$today_date,如下
spawn scp pi@133.2.186.95:/home/pi/light_sensor/$today_date.txt /Users/maomao/Documents/python

若是需要改为昨天或者其他日期,需要再写一个脚本为yesterday_date.sh,如下
(注意这是Mac os 的写法和Linux不同)
#!/bin/bash
echo `date -v-1d +%Y%m%d`
这里是Linux的写法)
#!/bin/bash
echo $(date  --date='1 day ago' "+%Y%m%d")
然后设置时间变量
set yesterday_date [exec /Users/maomao/Documents/python/yesterday_date.sh]
最后把20170724$yesterday_date,如下
spawn scp pi@133.2.186.95:/home/pi/light_sensor/$yesterday_date.txt /Users/maomao/Documents/python
根据自己的需要复制的文件文件名可修改日期和日期格式,例如
#!/bin/bash
#Mac os的写法
echo `date -v-1w +%F`
是上周的日期,日期格式2017-07-17

总结:
Macoslinux写法在有些地方不同,Linux下的#!/bin/bash#!/bin/tcsh写法也不同,使用except时候,开头为#!/usr/bin/expect -f不是#!/bin/bash为开头,写法也和#!/bin/bash有所不同。当然在#!/bin/bash下也可以调用except
参考:


http://jibbysununix.blogspot.jp/2010/01/automating-sftp-with-expect-script.html

评论