使用AppleScript在cURL中引用路径形式时遇到问题

使用AppleScript在cURL中引用路径形式时遇到问题,curl,applescript,Curl,Applescript,这项工作: do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/myFile.txt" do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/'User Content.localized'/my

这项工作:

do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/myFile.txt"
do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/'User Content.localized'/myFile.txt"
但扩展目标路径以包含第二个带引号的文件夹失败:

do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/'User Content'/myFile.txt"
它引发了一个错误:

警告:无法创建文件/Users/[username]/Library/Group

在这两种情况下,在路径的同一“组”部分,用单引号包装完整路径也会失败,例如:

do shell script "cURL -f http://mydomain/myfile.txt -o '~/Library/Group Containers/UBF8T346G9.Office/myFile.txt'"

我做错了什么?

您可以简单地使用反斜杠来转义路径中的空格。比如说,

do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/Group\\ Containers/UBF8T346G9.Office/User\\ Content.localized/Chart\\ Templates.localized/myFile.txt"

您还可以使用输入的POSIX路径的命令
引用形式
正确转义变量
输入的路径
。有关更多详细信息,请参阅Apple技术说明TN2065的“处理文件”部分。

您可以简单地使用反斜杠来转义路径中的空格。比如说,

do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/Group\\ Containers/UBF8T346G9.Office/User\\ Content.localized/Chart\\ Templates.localized/myFile.txt"

您还可以使用输入的POSIX路径的命令
引用形式
正确转义变量
输入的路径
。有关更多详细信息,请参阅Apple技术说明TN2065的“处理文件”部分。

我发现解决方案是为第二个文件夹使用正确的名称! 这在Finder中显示为“用户内容”,但当使用右键单击/Info进行检查时,实际上是“用户内容.本地化”。所以这是可行的:

do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/myFile.txt"
do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/'User Content.localized'/myFile.txt"
这也是:

do shell script "cURL -f http://mydomain/myfile.txt -o ~/'Library/Group Containers/UBF8T346G9.Office/User Content.localized/myFile.txt'"

我发现解决方法是为第二个文件夹使用正确的名称! 这在Finder中显示为“用户内容”,但当使用右键单击/Info进行检查时,实际上是“用户内容.本地化”。所以这是可行的:

do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/myFile.txt"
do shell script "cURL -f http://mydomain/myfile.txt -o ~/Library/'Group Containers'/UBF8T346G9.Office/'User Content.localized'/myFile.txt"
这也是:

do shell script "cURL -f http://mydomain/myfile.txt -o ~/'Library/Group Containers/UBF8T346G9.Office/User Content.localized/myFile.txt'"

我不知道是什么导致了这个问题,但是试着在开头引用整个路径,除了
~/
——如果没有引用,shell只会将它扩展到您的主目录。此外,请检查以确保单引号是纯ASCII单引号,而不是一些花哨的卷曲unicode引号。谢谢Gordon。我没有意识到关于~/的一点,我尝试不引用该部分(使用简单的ASCII单引号)当路径中有两个文件夹名,其中包含空格时,仍然会引发错误,尽管引用您描述的整个第一个路径示例可以解决此问题。或者:将路径完整地写出来,而不是使用
~
,然后将整件事都放在引号中:
“/Users/%you%/Library/Group Containers/UBF8T346G9.Office/User Content/myFile.txt”
;或者,按照Gordon的建议,但我会显式键入,将波浪线拉到引用路径之外,并将其余部分保留在引号中:
~/“Library/Group Containers/UBF8T346G9.Office/User Content/myFile.txt”
ahhh。文件夹的“用户内容”在Finder中是这样显示的,但如果我右键单击并查看信息,它实际上是“用户内容。本地化”我不知道是什么导致了问题,但尝试在开头引用整个路径,除了
~/
——如果没有引用,shell只会将其扩展到您的主目录。此外,请检查以确保单引号是纯ASCII单引号,而不是一些花哨的卷曲unicode引号。谢谢Gordon。我没有意识到关于~/的一点,我尝试不引用该部分(使用简单的ASCII单引号)当路径中有两个文件夹名,其中包含空格时,仍然会引发错误,尽管引用您描述的整个第一个路径示例可以解决此问题。或者:将路径完整地写出来,而不是使用
~
,然后将整件事都放在引号中:
“/Users/%you%/Library/Group Containers/UBF8T346G9.Office/User Content/myFile.txt”
;或者,按照Gordon的建议,但我会显式键入,将波浪线拉到引用路径之外,并将其余部分保留在引号中:
~/“Library/Group Containers/UBF8T346G9.Office/User Content/myFile.txt”
ahhh。文件夹的“用户内容”在Finder中是这样显示的,但如果我右键单击并查看信息,它实际上是“用户内容。本地化”谢谢E.Harley。这是我在阅读Bash手册中有关引用和转义的部分后尝试的另一件事,但在脚本编辑器的第一个空格字符处出现语法错误:应为“”“但是发现了未知的标记。你可以通过复制/粘贴你的例子来确认。使用双黑斜杠在双引号字符串内转义。啊!谢谢你让我知道!谢谢你,哈利。这是我在阅读Bash手册中有关引用和转义的部分后尝试的另一件事,但在脚本编辑器的第一个空格字符处出现语法错误:应为“”“但是发现了未知的标记。你可以通过复制/粘贴你的例子来确认。使用双黑斜杠在双引号字符串内转义。啊!谢谢你让我知道!