【发布时间】:2020-10-30 00:48:22
【问题描述】:
如果文件已通过 SSH 存在于远程服务器上,我想更改该文件的名称。
我从here(超级用户)试过这个
bash
ssh user@localhost -p 2222 'test -f /absolute/path/to/file' && echo 'YES' || echo 'NO'
这适用于提示符,当文件存在时回显 YES,不存在时回显 NO。但我希望它从 crontab 启动,那么它必须在脚本中。
假设文件名为data.csv,在循环中设置了一个条件,例如如果服务器上已经有一个data.csv文件,该文件将重命名为data_1.csv,然后是data_2.csv,。 .. 直到名称是唯一的。
重命名部分有效,但检测部分无效:
while [[ $fileIsPresent!='false' ]]
do
((appended+=1))
newFileName=${fileName}_${appended}.csv
remoteFilePathname=${remoteFolder}${newFileName}
ssh pi@localhost -p 2222 'test -f $remoteFilePathname' && fileIsPresent='true' || fileIsPresent='false'
done
对于任何data_X.csv,始终返回fileIsPresent='true'。所有的路径都是绝对的。
你有什么想法可以帮助我吗?
【问题讨论】:
-
请添加一个shebang,然后将您的脚本粘贴到shellcheck.net 并尝试实施那里提出的建议。
-
@Cyrus 这个工具太强大了,非常感谢它对我帮助很大!