簡體   English   中英

在MacOS上的Shell腳本(osascript)中執行sudo rm命令時出錯

[英]Error when executing sudo rm commands in shell script (osascript) on MacOS

我想學習有關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

編輯:我嘗試像@那個其他人這樣說:

`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"`

但是,如果一個命令失敗,則停止執行。

感謝@ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM