Eu criaria dois scripts. Um para fazer o trabalho real que fica de olho em um sinal que você quer abortar e outro que envia o sinal. Então ...
Script de trabalho com verificações freqüentes de sinal ...
set abortPath to POSIX path of (path to home folder as string)
set abortFile to quoted form of (abortPath & "abort.cmd")
repeat
# Lets do wome 'work'
set r to (random number from 0.1 to 1)
delay r
set abortNow to false
try
do shell script "test -f " & abortFile
set abortNow to true
end try
if abortNow is true then
# Should remove abort.cmd here
exit repeat
end if
end repeat
Script que envia o sinal ...
set abortPath to POSIX path of (path to home folder as string)
set abortFile to quoted form of (abortPath & "abort.cmd")
set r to display dialog "Send signal to worker?" as text ¬
buttons {"No", "Yes"} default button ¬
"Yes" with icon stop with title "Send Signal?"
if button returned of r is "Yes" then
do shell script "touch " & abortFile
end if
Uma maneira mais elaborada é usar o " Corredor ASObjC " legal para mostrar um diálogo de progresso com um abortar botão você pode pressionar para parar o seu loop. Esta é uma pergunta relacionada com código de exemplo.