【发布时间】:2017-08-23 21:23:21
【问题描述】:
所以,我正在尝试编写一个脚本来删除无线网络及其相关的钥匙串凭据。
tell application "Terminal"
activate
string mywifi
set mywifi to "test"
set mywifi to do script ("networksetup -listallhardwareports | grep -A 1 'Wi-Fi' | grep -v 'Hardware' | sed -e 's/'Device:\ '//g'")
do script "networksetup -removepreferredwirelessnetwork $mywifi NETWORK1"
do script "security delete-generic-password NETWORK1"
delay 2
#do script "networksetup -removepreferredwirelessnetwork $mywifi NETWORK2"
#do script "security delete-generic-password Network2"
delay2
#do script "networksetup -removepreferredwirelessnetwork $mywifi Network3"
#do script "security delete-generic-password Network3"
delay 2
#do script "networksetup -removepreferredwirelessnetwork $mywifi Network4"
#do script "security delete-generic-password Network4"
delay 2
#do script "networksetup -removepreferredwirelessnetwork $mywifi Network5"
#do script "security delete-generic-password Network5"
delay 2
结束告诉 退出
我遇到麻烦的地方是使用该命令的输出设置该变量。该命令在终端中运行,但每当我尝试编译它时,都会引发以下错误
语法错误:应为“”,但发现未知标记
它在 /device:\ ' 之间的 \ ' 之后找到这个 我一直无法弄清楚缺少什么。如果我在它们之间添加“,它只会将终端拖放到 > 我第一次涉足 applescript 但不是我的第一语言。我想我已经盯着它太久了。
【问题讨论】:
-
这一行为什么有括号?
set mywifi to do script ("...") -
该行应该是:
set mywifi to do shell script "networksetup -listallhardwareports | grep -A 1 'Wi-Fi' | grep -v 'Hardware' | sed -e 's/'Device:\\ '//g'" -
为什么不直接在
bash脚本中执行全部操作,而不是调用bash11 次,每次执行一个命令?这里根本不需要任何 AppleScript。 -
顺便说一句,您可以使用以下命令缩短命令的组合:
set mywifi to do shell script "networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}'" -
() 只是为了突出显示。我为混乱道歉。我不知道 bash 能够为我做到这一点。我认为applescript会更好地与osx交互。我将更多地研究 bash。谢谢指点!我知道这是命令的杂乱无章。 :) 虽然这是我可以开始工作的第一件事 :) 我很欣赏代码中的清理工作!有没有办法给大家加分?
标签: variables terminal applescript