如何在 applescript do shell 脚本中传递两个以上的变量?

How do I pass more than two variables in applescript do shell script?

我试过这个:

do shell script "curl -A  " & quoted form of useragent & " quoted form of urlst"

然而,这认为 quoted form of urlst 是 shell 脚本。

我也试过这个:

do shell script "curl -A  " & quoted form of useragent & quoted form of urlst

但是现在它只是说没有指定URL,所以它无法读取变量。

我该如何解决这个问题?

简答你应该做的是:

do shell script "curl -A  " & quoted form of useragent & space & quoted form of urlst

shell 具有独特的文本处理方式。通常 bash 读取数据直到遇到分隔符(默认值:space、制表符或 return)。引号是一个开关,可以打开或关闭剩余数据的解释方式。当它读取引用时,它会打开或关闭其替换模式。当它打开时(默认情况下)特殊字符保持其含义,当它关闭时特殊字符根本没有意义。所以 'hello world!'hello' 'world! 是 bash 中的相同字符串,因为只有 space 是一个特殊字符,其中第一个引号关闭替换,第二个引号将其重新打开。在到达行尾之前,需要再次打开替换模式,以便它可以找到行尾。在您的情况下,字符串 'safari' 紧跟 'http://www.whosebug.com' 将被视为一个完整的字符串。因此,当将多个参数传递给 bash 时,您需要确保它在替换模式打开时由 space 分隔。