如何使用applescripts做无引号的shell脚本

时间:2019-04-07 19:41:20

标签: bash applescript sudo quotes

我在bash中有一个程序,它将更改我显示的MAC地址。我想使用“ do shell script”将该程序变成一个applescript。但是,每当我在“ do shell script”函数中运行代码时,它都将无法工作。这很奇怪,因为它可以在终端中工作。

这是在我的Mac计算机上,并且我认为这是“执行外壳脚本”功能后所需引号引起的问题。我尝试更改报价顺序,但似乎不起作用。

sudo ifconfig en0 ether "$(openssl rand -hex 6 | sed 's/../&:/g;s/:$//')"

这是基本代码

do shell script "sudo ifconfig en0 ether "$(openssl rand -hex 6 | sed 's/../&:/g;s/:$//')"" with administrator privileges

这是此代码的AppleScript变体。

预计此代码将更改我的MAC地址,但它返回了“错误-212”

1 个答案:

答案 0 :(得分:1)

不确定什么错误-212,但是在AppleScript中,(双引号)用于分隔字符串,因此在 字符串中使用它需要用反斜杠转义,例如例子

do shell script "ifconfig en0 ether \"$(openssl rand -hex 6 | sed 's/../&:/g;s/:$//')\"" with administrator privileges

请注意,sudo不应与administrator privileges一起使用-请参阅Apple的Technical Note TN2065