5

I found the following shell script that can be used to tell an OS X application to quit:

#!/bin/sh

echo | osascript <<EOF
tell application "$*"
  quit
end tell
EOF

I have several simple alias commands in my .bash_profile and would like to add a "quit" command there instead of using this script. I created the following, but it doesn't work:

alias quit='osascript -e "quit application \"$1\""' 

I'm sure I've munged the command. Any advice?

wonea
  • 1,817
  • 1
  • 23
  • 42
Michael Prescott
  • 4,011
  • 13
  • 50
  • 65

3 Answers3

8

Use a function instead:

function quit {
osascript <<EOF
  tell application "$*" to quit
EOF
}
iconoclast
  • 3,260
  • 6
  • 35
  • 38
devanjedi
  • 161
  • 2
  • `tell application "$*" to quit` is more compact. – Daniel Beck Dec 16 '10 at 02:02
  • @DanielBeck: I've edited it to remove other redundancies as well, such as defining an alias whose only purpose is to call the function. I left the HEREDOC-style quoting as I was having problems with alternatives and grew impatient ;) – iconoclast Oct 04 '13 at 00:28
2

Aliases can't have parameters. Aliases do a strict text substitution, where 'parameters' would kind of end up at the end.

I'd do a function, which can have parameters.

function quit
{
    if [ $# -ne 0 ]; then
        echo "usage: quit _appname_" >&2
        return
    fi
echo | osascript <<EOF
tell application "$1"
  quit
end tell
EOF
}

Sorry, but I can't test this and verify today (no Mac), but the idea would work as a function.

Rich Homolka
  • 31,057
  • 6
  • 55
  • 80
0

does it have to be an alias?

pkill Application

like, for example pkill Safari should do the same

dajo
  • 1
  • 1
  • Answer is for a proper answer, not another question, kindly read [how do I write a good answer](https://superuser.com/help/how-to-answer) and edit your answer – yass Mar 22 '17 at 22:45