2017-09-18 16 views
0

Macでスクリプトを作成したいと思っています。これはウェブ上のスクリプトに基づいています。ショーのいくつかのダイアログの後にMySQLが)、ダイアログが正常に動作しますが、私はそれが動作しないsudo rm linesを入れたときに、それはSyntax Error言う、これは私のコードです:MacOSのシェルスクリプト(osascript)でsudo rmコマンドを実行するとエラーが発生する

#!/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: 私は@that他の男のようにしてみてください

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

ただし、1つの通信実行を停止するだけで停止します。ここでは、@CharlesDuffyと@zneakを@thatotherguyする

+2

ザ・マックの自動化スクリプトガイド.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/CallCommandLineUtilities.html)シェルコマンドをAppleScriptに埋め込む'do shell script 'ls/Applications /" ' –

+0

なぜ以前からではなく' osascript'を起動した後に 'sudo' *を使用しようとしていますか? –

+2

つまり、 'sudo osascript'はすべてをrootとして実行するので、その時点の後ろのどこでも' sudo'を使う必要はありません。 –

答えて

1

おかげで完璧に働いスクリプトです:(https://developer.apple [ `んシェルscript`を使用することを提案]

#!/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 
関連する問題