我试过了:
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,所以它无法读取变量。
我该如何解决这个问题?
答案 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时,您需要确保在替换模式打开时它由空格分隔。