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

时间:2016-01-26 20:18:32

标签: applescript sh

我试过了:

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,所以它无法读取变量。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

简短回答你应该做的是:

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

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