我想从sftp服务器安排文件副本。不允许使用公钥,所以我只知道使用expect的一种方法。
问题是文件名每天都在变化,但文件名实际上是日期+ .csv所以我可以安排它。
但无法设置变量文件名......
我想在2个脚本中做这样的事情。
文件名=日期%Y%m%d
连接到sftp服务器 获取文件名。
我的努力如下所示。
my * .sh script =
#!/bin/sh
file=$(date --date='-2 days' +%Y%m%d.csv)"
# looking for something like this (20121031.csv)
export file
expect /home/desk4/task/sftp.exp
我希望脚本位于“/home/desk4/task/sftp.exp”
spawn /usr/bin/sftp user@server.com
expect "user@server.com's password:"
send "password"
send "\r"
expect "sftp>"
spawn "get $file \r"
expect "sftp>"
send "bye \r"
错误
./ sftp.sh:3:export:20121031.csv:错误的变量名称
#!/bin/sh
file=$(date)
export $file
expect /home/harshit/Desktop/1/sftp.exp
======================================= 错误= ./sftp.sh:3:export:2:错误的变量名称
- 端 -
感谢您的重播..
答案 0 :(得分:1)
"错误的变量名称"错误是由于您导出变量的值而不是变量的名称:export $file
错误,请使用export file
预计,您可以通过全局env
数组访问环境变量,因此请使用$env(file)
而不是$file
答案 1 :(得分:0)
继续并在同一行中发出导出和变量:
$export filename=`date +'%F' | sed 's/[-]//g'`.csv
$echo $filename
20121103.csv