将 bash 列表传递到 applescript(使用 osascript)
Pass bash list into applescript (using osascript)
我正在尝试将 bash 列表传递给 applescript 变量,但它无法通过常规方法工作。
我有一个类似于 [Terminal、Utilities、Finder、Launchpad] 的列表。我通过声明将 bash 列表传递到 applescript 变量中:
set applescriptList to "$bashList"
这适用于我尝试通过 osascript 传递到 applescript 变量的任何其他数据结构但是,当我记录列表中的第一项时,而不是在此示例中 returning 终端,它会 return 字母 "T"。同样,如果我记录第二个项目,它 return 是字母 "e" 而不是实用程序,因此看起来每个单独的字符都是列表中的一个项目。
有没有人有将 bash 列表传递到 applescript 变量的经验?谢谢
我假设 'bash list' 你的意思是多行文本,在这种情况下使用 paragraphs of bashList
在换行符处拆分它。
鉴于此:
bashList=(Terminal Utilities Finder Launchpad)
那么你可以这样做:
osascript -e "set ASlist to the paragraphs of \"$(printf '%s\n' "${bashList[@]}")\""
或者,考虑到上面需要转义的所有引号,阅读起来更简单一些:
osascript <<OSA
set ASlist to the paragraphs of "$(printf '%s\n' "${bashList[@]}")"
OSA
尽管如此,如果您知道 bashList
中的每个项目都只包含一个单词,那么这就不需要 printf
:
osascript <<OSA
set ASlist to the words of "${bashList[@]}"
OSA
在 运行 之后 bash 返回到 stdout
的结果将如下所示:
Terminal, Utilities, Finder, Launchpad
这是我所期望的。等效的 AppleScript 输出看起来像这样:
{Terminal, Utilities, Finder, Launchpad}
表示已为 ASlist
分配了一个值列表,用大括号表示。然而,这个列表很难翻译成 bash 输出,所以花括号会丢失,并且不容易区分列表和包含几个逗号的字符串。
我正在尝试将 bash 列表传递给 applescript 变量,但它无法通过常规方法工作。
我有一个类似于 [Terminal、Utilities、Finder、Launchpad] 的列表。我通过声明将 bash 列表传递到 applescript 变量中:
set applescriptList to "$bashList"
这适用于我尝试通过 osascript 传递到 applescript 变量的任何其他数据结构但是,当我记录列表中的第一项时,而不是在此示例中 returning 终端,它会 return 字母 "T"。同样,如果我记录第二个项目,它 return 是字母 "e" 而不是实用程序,因此看起来每个单独的字符都是列表中的一个项目。
有没有人有将 bash 列表传递到 applescript 变量的经验?谢谢
我假设 'bash list' 你的意思是多行文本,在这种情况下使用 paragraphs of bashList
在换行符处拆分它。
鉴于此:
bashList=(Terminal Utilities Finder Launchpad)
那么你可以这样做:
osascript -e "set ASlist to the paragraphs of \"$(printf '%s\n' "${bashList[@]}")\""
或者,考虑到上面需要转义的所有引号,阅读起来更简单一些:
osascript <<OSA
set ASlist to the paragraphs of "$(printf '%s\n' "${bashList[@]}")"
OSA
尽管如此,如果您知道 bashList
中的每个项目都只包含一个单词,那么这就不需要 printf
:
osascript <<OSA
set ASlist to the words of "${bashList[@]}"
OSA
在 运行 之后 bash 返回到 stdout
的结果将如下所示:
Terminal, Utilities, Finder, Launchpad
这是我所期望的。等效的 AppleScript 输出看起来像这样:
{Terminal, Utilities, Finder, Launchpad}
表示已为 ASlist
分配了一个值列表,用大括号表示。然而,这个列表很难翻译成 bash 输出,所以花括号会丢失,并且不容易区分列表和包含几个逗号的字符串。