我是Applescript& amp;的初学者Shell和我正在写一个脚本,在某一点上要求我删除.txt文件中列出的文件。我已经在stackoverflow上进行了大量搜索,并且能够在我的Applescript中运行以下命令...
do shell script "while read name; do
rm -r \"$name"\
done < ~Documents/Script\\ Test/filelist.txt"
它似乎识别并读取了该文件,但是我收到了一个错误,说明了这一点,我无法弄清楚原因:
错误“rm:〜/ Documents / Script Test / filetodelete.rtf:没有这样的文件或目录”编号1
也就是说,我可以导航到那个确切的目录,并验证具有该扩展名的文件确实存在。有人可以帮助解释为什么会出现这种错误吗?
答案 0 :(得分:0)
你有一个错字。该文件的路径很可能是~/Documents
,而不是~Documents
(在Bash中,它将是帐户名为Documents
的用户的主目录)。
如果你的shell不是Bash,它可能甚至不支持~
的{{1}}。
在数据文件中,您也无法使用$HOME
来引用您的主目录。你可以用一个简单的替换来扩充循环来支持这个:
~
另请注意使用while read -r file; do
case $file in '~'*) file=$HOME${file#\~};; esac
rm -r "$file"
done < ~/"Documents/Script Test/filelist.txt"
来避免read -r
的旧版默认行为出现一些令人讨厌的问题。