![](/img/trans.png)
[英]Applescript+Bash: Script works in the Applescript editor but not using 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.