如何使用 applescripts 做 shell 不带引号的脚本
How to use applescripts do shell script without quotes
我在 bash 中有一个程序可以更改我显示的 MAC 地址。我想使用 "do shell script" 将此程序制作成 applescript。但是,每当我 运行 "do shell script" 函数中的代码时,它都不起作用。这很奇怪,因为它在终端中工作。
这是在我的 Mac 计算机上,我认为这是 "do shell script" 函数后所需引号的问题。我尝试过更改报价顺序,但似乎没有用。
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 地址,但它返回了 "error -212"
不确定 -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。
我在 bash 中有一个程序可以更改我显示的 MAC 地址。我想使用 "do shell script" 将此程序制作成 applescript。但是,每当我 运行 "do shell script" 函数中的代码时,它都不起作用。这很奇怪,因为它在终端中工作。
这是在我的 Mac 计算机上,我认为这是 "do shell script" 函数后所需引号的问题。我尝试过更改报价顺序,但似乎没有用。
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 地址,但它返回了 "error -212"
不确定 -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。