Le flux de travail que j'essaie d'atteindre:
- Exporter un fichier SVG depuis Adobe Illustrator vers le bureau
- Faites glisser le fichier SVG du bureau sur Automator Droplet
- Automator exécute le script (résumé de base ci-dessous)
- Le script s'exécute et me laisse avec ICO
Mon script est:
ROOT=~/Desktop/
TRASH=~/.Trash/
INK=/Applications/Inkscape.app/Contents/Resources/bin/inkscape
$INK --export-png $ROOTtest_256.png -w 256 -h 256 $1
$INK --export-png $ROOTtest_128.png -w 128 -h 128 $1
$INK --export-png $ROOTtest_064.png -w 064 -h 064 $1
$INK --export-png $ROOTtest_048.png -w 048 -h 048 $1
$INK --export-png $ROOTtest_040.png -w 040 -h 040 $1
$INK --export-png $ROOTtest_032.png -w 032 -h 032 $1
$INK --export-png $ROOTtest_024.png -w 024 -h 024 $1
$INK --export-png $ROOTtest_016.png -w 016 -h 016 $1
convert $ROOTtest_*.png $ROOTTEST.ico
cp $ROOTtest_*.png $1 $TRASH
Résumé du script:
- Prenez SVG (par glisser / déposer) et exportez plusieurs PNG à des tailles spécifiées
- Prendre plusieurs PNG et fusionner en un seul ICO
- Envoyez les SVG et PNG originaux à la corbeille
Erreurs / problèmes:
- Lorsque je teste exécuter le script Automator je reçois cette erreur:
-: line 12: convert: command not found
. Cependant, je peux collerconvert ~/Desktop/test_*.png ~/Desktop/Test.ico
dans Terminal et tout ira bien. Aucune idée pourquoi Automator ne semble pas pouvoir trouver cette commande? - Même si la ligne 12 ne fonctionne peut-être pas correctement, je m'attendrais quand même à ce que toutes les lignes situées au-dessus fonctionnent correctement, mais je ne vois aucun signe qu'elles fonctionnent. En déposant un fichier SVG sur l’automate Droplet, j’espérais voir 8 PNG sur mon bureau, mais rien n’apparaît. Même après la suppression de la dernière ligne qui déplace les fichiers PNG et SVG d'origine dans la corbeille, rien ne s'affiche sur mon bureau.
Toute aide est la bienvenue!
terminal
command-line
automator
script
Jonathan
la source
la source
INK
dans un chemin connu sans espaces, toutes vos utilisations~
peuvent être étendues à un chemin contenant des espaces.Réponses:
Vous avez probablement personnalisé la variable d'environnement de chemin de recherche de commande
PATH
à localiser,convert
car elle n'est pas installée dans un emplacement OS X standard.Lorsque l'action de script shell Automator exécute un script, elle utilise un shell non interactif, ce qui signifie qu'elle n'exécute pas de fichiers tels que
~/.bashrc
ou~/.bash_profile
. Cela signifie qu'il utilise l'environnement par défaut et le chemin de recherche des commandes par défaut.De plus, il est recommandé aux scripts shell d’utiliser des chemins absolus pour les exécutables de commande afin que le script exécute toujours celui que vous souhaitez, au lieu de s’appuyer sur le chemin de recherche, qui est avant tout un outil pratique pour une utilisation interactive des fichiers. coquille. Pour découvrir le chemin absolu de la
convert
commande, exécutez-lewhich convert
dans un shell.la source
which convert
le script shell plutôt que simplement le shell. Cela m’a jeté une boucle pendant une seconde, parce que mon cerveau ne l’avait pas interprété correctement au début.@Chris Page offrait une réponse parfaitement acceptable, car elle répond à tous vos problèmes, mais j'ai jeté un second coup d'œil à votre code et je me suis demandé pourquoi ne pas utiliser une fonction avec une boucle à la place de toutes ces commandes variables.
Notez que le code ci-dessus n'a pas été testé et qu'il ne s'agit pas de votre script complet, mais simplement d'un extrait de code qui remplacera la majorité de votre code. Je mettrai à jour après avoir eu la chance de le tester, mais cela me semble bien. Vous devrez peut-être exporter la fonction ou quelque chose (
export -f ink
) ou manipuler les variables d'argument - mais comme je l'ai dit, je publierai une mise à jour après avoir eu la chance de la tester.En outre, comme je l’ai déjà dit, @Chris Page a fourni une réponse qui répond plutôt bien à votre question. Il s’agit simplement d’informations supplémentaires qui sont mieux formatées sous forme de réponse plutôt que de commentaires multiples.
En outre, il est recommandé de toujours utiliser des noms de variables minuscules dans les scripts du shell afin de ne pas écraser les variables d’environnement intégrées (problème avec lequel j’ai eu du mal, car les variables sont tellement plus faciles à reconnaître - en particulier dans un script volumineux sur un système sans terminal coloré pour la coloration syntaxique).
la source