[英]Error when executing sudo rm commands in shell script (osascript) on MacOS
I want to learn about scripting in mac, this is my first script based on what I found on the web, i'm just trying to delete some files (MySQL) after show some dialogs, the dialogs works fine, but when I put the sudo rm lines
it doesn't work, it says Syntax Error
, this is my code: 我想学习有关Mac脚本的信息,这是我在网上找到的第一个脚本,在显示一些对话框后,我只是想删除一些文件(MySQL),这些对话框可以正常工作,但是当我将
sudo rm lines
不起作用,它说Syntax Error
,这是我的代码:
#!/bin/sh
osascript <<EOT
app "System Events"
set answer to the button returned of (display dialog "You want to delete MySQL?" buttons {"Yes", "No"} default button 2)
if (answer = "No") then
display dialog "Canceled" buttons {"ok"}
else
if (answer = "Yes")then
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/var/mysql
sudo rm -rf /usr/local/mysql*
sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo rm -rf /var/db/receipts/com.mysql.*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /private/var/db/receipts/*mysql*
launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysql.plist
launchctl unload -w ~/Library/LaunchDaemons/com.st.plist
set answer to the button returned of (display dialog "MySQL deleted, restart necesary.\nrestart now?" buttons {"Yes","Restart Later"}default button 2)
end if
end if
return -- Suppress result
end
EOT
EDIT: I try like @that other guy says like this: 编辑:我尝试像@那个其他人这样说:
`do shell script "sudo rm /usr/local/mysql &&
sudo rm -rf /usr/local/var/mysql &&
sudo rm -rf /usr/local/mysql* &&
sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist &&
sudo rm -rf /Library/StartupItems/MySQLCOM &&
sudo rm -rf /Library/PreferencePanes/My* &&
sudo rm -rf /var/db/receipts/com.mysql.* &&
sudo rm -rf /Library/Receipts/MySQL* &&
sudo rm -rf /private/var/db/receipts/*mysql* &&
launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysql.plist &&
launchctl unload -w ~/Library/LaunchDaemons/com.st.plist"`
But if one command fail the execution just stop. 但是,如果一个命令失败,则停止执行。
Thanks to @thatotherguy, @CharlesDuffy and @zneak, here is the script working perfectly: 感谢@ thatotherguy,@ CharlesDuffy和@zneak,以下脚本可以完美运行:
#!/bin/sh
sudo osascript <<EOT
app "System Events"
set answer to the button returned of (display dialog "You want to delete MySQL?" buttons {"Yes", "No"} default button 2)
if (answer = "No") then
display dialog "Canceled" buttons {"ok"}
else
if (answer = "Yes")then
do shell script "sudo rm /usr/local/mysql;
rm -rf /usr/local/var/mysql;
rm -rf /usr/local/mysql*;
rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist;
rm -rf /Library/StartupItems/MySQLCOM;
rm -rf /Library/PreferencePanes/My*;
rm -rf /var/db/receipts/com.mysql.*;
rm -rf /Library/Receipts/MySQL*;
rm -rf /private/var/db/receipts/*mysql*;
launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysql.plist;
launchctl unload -w ~/Library/LaunchDaemons/com.st.plist;"
set answer2 to the button returned of (display dialog "MySQL deleted, restart necesary.\nrestart now?" buttons {"Yes","Restart Later"}default button 2)
if (answer2 = "Yes")then
tell app "System Events" to restart
end if
end if
return -- Suppress result
end
EOT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.