繁体   English   中英

将bash列表传递到applescript(使用osascript)

[英]Pass bash list into applescript (using osascript)

我正在尝试将bash列表传递给applescript变量,但是它无法通过常规方法工作。

我有一个看起来像[Terminal,Utilities,Finder,Launchpad]的列表。 我通过声明将bash列表传递给applescript变量:

set applescriptList to "$bashList"

这可以与我尝试通过osascript传递到applescript变量的任何其他数据结构一起使用。但是,当我登录列表中的第一项时,而不是在此示例中返回Terminal,而是返回字母“ T”。 同样,如果我记录第二个项目,它将返回字母“ 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输出,因此花括号丢失了,并且很难将列表与包含几个逗号的字符串区分开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM