【问题标题】:Using double quotes in Applescript command Do Shell Script Echo在 Applescript 命令中使用双引号 Do Shell Script Echo
【发布时间】:2013-01-22 03:26:59
【问题描述】:

我正在尝试使用 applescript 来运行命令行进程。 Applescript 的简化版本如下所示

do shell script "echo bwfmetaedit --INAM=\"name\" --IART=\"artist\" --ICRD=\"date\" /desktop/filepath.wav"

预期结果是

bwfmetaedit --INAM="name" --IART="artist" --ICRD="date" /desktop/filepath.wav

如果我只是在终端中运行该命令,我会得到正确的输出。但是使用applescript,我得到以下结果。请注意值周围缺少的双引号。

"bwfmetaedit --INAM=name --IART=artist --ICRD=date /desktop/filepath.wav"

我在这里缺少什么?我需要在值周围加上双引号,否则命令将无法正常运行。

谢谢, 摩根

【问题讨论】:

    标签: applescript echo quotes double-quotes


    【解决方案1】:

    试试:

    do shell script "echo bwfmetaedit --INAM=\\\"name\\\" --IART=\\\"artist\\\" --ICRD=\\\"date\\\" /desktop/filepath.wav"
    

    【讨论】:

      【解决方案2】:

      引号被正确传递,只是 shell 没有回显它们,因为它们是 shell 语法的一部分。

      如果您尝试使用将每个参数打印在自己的行上的 AppleScript:

      do shell script "sh -c 'for F in \"${@}\"; do echo \"${F}\"; done' \"${0}\" echo bwfmetaedit --INAM=\"name with spaces\" --IART=\"artist with spaces\" --ICRD=\"date with spaces\" /desktop/filepath.wav"
      

      然后你会看到输出是:

      "echo
      bwfmetaedit
      --INAM=name with spaces
      --IART=artist with spaces
      --ICRD=date with spaces
      /desktop/filepath.wav"
      

      传递给 echo 的每个参数都被正确解析,就好像它被引用一样。 引号在开头和结尾,因为它是一个嵌入换行符的 AppleScript 字符串。

      【讨论】:

        【解决方案3】:

        对我来说,我的挑战是

        osascript -e 'tell application "Simulator" to quit'
        

        所以我的解决方案是

        do shell script osascript -e 'tell application \"Simulator\" to quit'"
        

        您必须在第一个双引号之前转义,然后再在它之​​前转义。谢谢大家的提示!

        【讨论】:

          【解决方案4】:

          要调用这个内部代码,试试这个

          set myStr to "/bin/echo Hello here is \\\"Quoted String\\\"

          do 脚本调用将用双引号写入它。

          do script myStr in front window

          【讨论】:

            猜你喜欢
            • 2022-06-11
            • 1970-01-01
            • 2021-07-22
            • 2015-11-04
            • 2015-06-16
            • 1970-01-01
            • 2013-04-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多