我有一个功能正常的shell脚本,看起来像这样(在终端中工作):
curl -X POST --compressed -H "Content-Type:application/json" \
-H 'x-api-user: hdfjdfpjefpoj' \
-H 'x-api-key: fpjefpojwpfjmwefpj' \
https://example.com/api/v1/user/...
但是,当我尝试使用do shell script
在Applescript中使用它时,我收到错误:
curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
sh: line 1: -H: command not found
sh: line 2: -H: command not found
sh: line 3: https://example.com/api/v1/user/...: No such file or directory
这是Applescript:
do shell script "curl -X POST --compressed -H 'Content-Type:application/json'
-H 'x-api-user: hdfjdfpjefpoj'
-H 'x-api-key: fpjefpojwpfjmwefpj'
https://example.com/api/v1/user/..."
出于安全原因,我发现一些线索表明do shell script
的行为与终端不完全相同。但我还没有找到解决这个问题的线索。
没有标题信息的相同Applescript成功传递了URL,但我需要在标题中发送我的凭据。
答案 0 :(得分:1)
我认为这是因为你有多行命令。而不是一个
线索是sh: line 1: -H: command not found
这表明shell正在尝试查找名为 -H 但未找到的命令。
在大多数情况下,命令始终是命令行字符串中的第一个单词。
所以这意味着-H选项被解释为命令,因为它们是一行上的第一个单词。 -H 显然是一个卷曲的选项,应该在同一行中跟随它。
尝试一行。
do shell script "curl -X POST --compressed -H 'Content-Type:application/json' -H 'x-api-user: hdfjdfpjefpoj' -H 'x-api-key: fpjefpojwpfjmwefpj' https://example.com/api/v1/user/..."