关于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
这是一个将树莓派(电脑)上的文件复制到当前电脑的一个脚本。由于except和bash的写法不同,很容易出错,特别是日期时间变量。
由于每天文件都在更新,如何将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
总结:
Macos和linux写法在有些地方不同,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
评论
发表评论