Wie schließe ich eine OS X-Anwendung über die Befehlszeile mit einem in meinem .bash_profile definierten Alias?


5

Ich habe das folgende Shell-Skript gefunden, mit dem eine OS X-Anwendung angewiesen werden kann, das Programm zu beenden:

#!/bin/sh

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

Ich habe mehrere einfache Alias-Befehle in meinem .bash_profile und möchte dort einen "quit" -Befehl hinzufügen, anstatt dieses Skript zu verwenden. Ich habe folgendes erstellt, aber es funktioniert nicht:

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

Ich bin mir sicher, dass ich den Befehl getäuscht habe. Irgendein Rat?

Antworten:


7

Verwenden Sie stattdessen eine Funktion:

function quit {
osascript <<EOF
  tell application "$*" to quit
EOF
}

tell application "$*" to quitist kompakter.
Daniel Beck

@DanielBeck: Ich habe es bearbeitet, um auch andere Redundanzen zu entfernen, z. B. um einen Alias ​​zu definieren, dessen einziger Zweck darin besteht, die Funktion aufzurufen. Ich habe das Zitat im HEREDOC-Stil verlassen, da ich Probleme mit Alternativen hatte und ungeduldig wurde;)
iconoclast

2

Aliase können keine Parameter haben. Aliase führen eine strikte Textsubstitution durch, bei der "Parameter" am Ende stehen.

Ich würde eine Funktion ausführen, die Parameter haben kann.

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

Tut mir leid, aber ich kann das heute nicht testen und verifizieren (kein Mac), aber die Idee würde als Funktion funktionieren.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.