如何在 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 分隔。
我试过这个:
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 分隔。