19 votes

Comment faire pour qu'un bash script puisse glisser son entrée au-dessus de l'icône ?

J'ai besoin de faire un script bash sur lequel je peux glisser un fichier .rar et ensuite le script recevra le nom de chemin de ce fichier comme argument 1 ($1).

J'ai créé le script bash, mais comment faire pour qu'il devienne une application (pour l'instant MAC OSX le traite comme un fichier texte même si j'ai fait chmod +x) et comment activer la méthode du glisser-déposer pour envoyer un fichier à mon script ?

19voto

MattDMo Points 2725

Vous devriez être en mesure de transformer votre script en une application avec Automator - Applications -> Utilities -> Automator.app . Recherchez une option appelée "Exécuter Shell script" et une fois que vous avez terminé, il devrait se comporter comme les autres applications en ce sens que tout ce qui est glissé et déposé sur lui sera exécuté avec lui. Bonne chance !

8voto

PHolker Points 61

J'ai créé un AppleScript qui redirige tous les fichiers déposés sur lui, vers un shell script avec le nom correspondant. Il suffit d'enregistrer l'application dans ScriptEditor d'Apple et de la renommer script.app pour qu'elle corresponde à votre script.sh.

on getScriptName()
    tell application "Finder"
        set p to path to me -- alias to the file of the running script
        set fullName to name of file p as text
        set strippedName to text 1 thru ((fullName's length) - (offset of "." in ¬
            (the reverse of every character of fullName) as text)) of fullName -- strip off extension
    end tell
    set my_path to (((path to me as text) & "::") as alias) as string -- parent folder of running script
    set ScriptName to POSIX path of my_path & strippedName & ".sh" -- path to bash script, expected to reside here
    return ScriptName
end getScriptName

on run -- double click on application
    set scriptfile to getScriptName()
    tell application "Terminal"
        activate
        do script scriptfile
    end tell
end run
on open dropfiles -- drag 'n drop files onto application
    set posixfiles to " "
    repeat with dropfile in dropfiles
        set posixfiles to posixfiles & " " & POSIX path of dropfile
    end repeat
    set scriptfile to getScriptName()
    tell application "Terminal"
        activate
        do script scriptfile & " " & posixfiles
    end tell
end open

Il est basé sur cette réponse Je me suis seulement débarrassé de script.sh nom de fichier.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X