【发布时间】:2021-03-14 15:18:21
【问题描述】:
我在我的 MacMini 上编写了一个 bash 脚本,以便在文件下载完成时执行。文件下载完成后,mac挂载我的NAS,重命名文件,然后将文件从mac复制到NAS,从mac删除文件,然后卸载NAS。
我的问题是,有时,NAS 需要几秒钟才能安装。发生这种情况时,我收到一条错误消息,指出文件不存在,因为该目录不存在。
当 NAS 立即挂载时,(如果文件很小),文件复制,然后文件删除,NAS 卸载。
当文件很大时,删除文件时复制过程停止。
我要找的是,如何让脚本“等待”直到挂载 NAS,然后如何让脚本再次等到文件复制完成?
感谢您的任何意见。下面是我的代码。
#connect to NAS
open 'smb://username:password@ip_address_of_NAS/folder_for_files'
#I WANT A WAIT COMMAND HERE SO THAT SCRIPT DOES NOT CONTINUE UNTIL NAS IS MOUNTED
#move to folder where files are downloaded
cd /Users/account/Downloads
#rename files and copy to server
for f in *; do
newName="${f/)*/)}";
mv "$f"/*.zip "$newName".zip;
cp "$newName".zip /Volumes/folder_for_files/"$newName".zip;
#I NEED SCRIPT TO WAIT HERE UNTIL FILE HAS COMPLETED ITS TRANSFER
rm -r "$f";
done
#unmount drive
diskutil unmount /Volumes/folder_for_files
【问题讨论】:
-
我想知道为什么它还没有等到复制完成。
-
您可以尝试在
cp之后添加sync;sync;sync。
标签: linux bash macos shell script