在SFTP bash脚本中正确的正则表达式

格斯·凯斯

我想自动化一个SFTP进程,以传输在本地服务器中创建的最后一个文件并将其发送到远程服务器。

在本地服务器中,我有“ / Source / Path /”,我的文件命名如下:

Logfile_2019-04-24
Logfile_2019-04-24_old.txt

这是我当前的脚本:

dyear=`date +'%Y' -d "1 day ago"`
dmonth=`date +'%b' -d "1 day ago"`
ddate=`date +%Y-%m-%d -d "1 day ago"`


HOST='192.168.X.X'
USER='user'
PASSWD='password'
localpath='/Source/Path/'$dyear'/'$dmonth'/'*$ddate*'.txt'
remotepath='/Destination/Path/'$dyear'/'$dmonth'/'

echo $localpath
echo $remotepath

export SSHPASS=$PASSWD
sshpass -e sftp $USER@$HOST << EOF
put '$localpath' '$remotepath'
EOF

当我执行echo $localpath操作时,它会打印正确的文件,但是在脚本中却出现此错误:

Connecting to 192.168.X.X...
sftp> put '/Source/Path/2019/Apr/*2019-04-24*' '/Destination/Path/2019/Apr/'
stat /Source/Path/2019/Apr/*2019-04-24*: No such file or directory

在此pasrt*$ddate*'.txt' in following行中正确的正则表达式将如何

    localpath='/Source/Path/'$dyear'/'$dmonth'/'*$ddate*'.txt'

为了传输文件“ Logfile_2019-04-24_old.txt”?

提前致谢

赛勒斯

更换

put '$localpath' '$remotepath'

put "$(echo $localpath)" '$remotepath'

*在您的Here-doc中强制替换通配符()。

如果您的通配符被多个文件替换,则此方法不起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章