À l'aide d'apple Automator pour passer les noms de fichiers d'un script shell
J'ai un script automator que je voudrais sur un dossier. Je veux que le script de prendre chaque fichier dans le dossier et exécuter ma commande shell. Automator est réglé pour passer d'entrée pour stdin, mais je ne pense pas que je suis en utilisant stdin correctement ci-dessous, pouvez vous nous aider s'il vous plaît?
for f in "$@"
do
java -Xmx1000m -jar /Users/myprog/myprog.jar $f
done
OriginalL'auteur John | 2009-12-06
Vous devez vous connecter pour publier un commentaire.
La variable spéciale
$@
représente tous les arguments de ligne de commande fournis au script.La
for
boucle étapes une par une et exécute le fichier jar à chaque fois. Vous pourrait raccourcir le script:le comportement par défaut de
for
est d'utiliser$@
.Vous devez placer des guillemets autour de $f à la fin de la commande java dans le cas où il y a des espaces dans les arguments.
OriginalL'auteur Dennis Williamson
Vous avez raison quand vous dites que vous êtes "pas à l'aide de stdin correctement". En fait, à partir de l'extrait de script fourni par vous, votre script suppose que vous obtenez les fichiers comme arguments sur la ligne de commande ... vous n'êtes pas à l'aide de stdin à tous!
Dans le coin supérieur droit de l'Exécution d'un Script Shell action, ci-dessous le X est une liste déroulante avec 2 options: Pass d'entrée: stdin' et 'Pass entrées: comme arguments'. Ces options de dicter la façon dont les fichiers sélectionnés sont passés au script d'action. Si l'option "comme arguments" est sélectionné, votre script doit utiliser le modèle suivant
Ce modèle est fourni par l'action elle-même, lorsque "comme arguments" est sélectionné.
D'autre part, si le 'stdin' option est sélectionnée, puis vous script doit utiliser cette tamplate:
(Dans le cas où vous ne savez pas scripts bash, tout ce qui est après le # sur une ligne est un commentaire)
Noter que le modèle fourni par l'action script est simple, unique commande
N'est pas très utile à mon avis.
Noter que jusqu'à ce que vous avez en fait d'entrer du texte dans la zone de script, entre 'stdin' et 'comme arguments" va évoluer le contenu de la zone de script (je suppose que c'est une allusion à ce que votre script devrait ressembler) mais une fois que vous entrez quelque chose, la commutation ne se produit plus.
OriginalL'auteur ehzone
Basé sur ce que j'ai vu ici, vous pouvez définir une pratique de "service" qui permet de faire un clic droit et de convertir les fichiers en utilisant le menu contextuel du finder.
De cette série:
Remplacer le texte existant du "chat" avec le code suivant:
REMARQUE: La configuration ci-dessus seront convertis en mono (-c 1-mélanger) à 16 bits @ 32000hz (LEI16@32000 = little endian 16 bits). Utilisez /usr/bin/afconvert -h dans le terminal pour voir toutes les options disponibles.
En haut de l'éditeur, vous devriez voir deux menus déroulants, de les définir comme suit:
Dans la Coquille de l'éditeur de Script de la zone, assurer:
et
Sauver la chose quelque chose comme "Convertir à la CAF"
OriginalL'auteur bob
Je ne suis pas sûr de comprendre ta question étant donné que votre script ne semble pas être à l'aide de stdin. Le $@ paramètre spécial étend à la position paramètres passés comme arguments argv. Il fonctionne de la même façon que si vous l'avez appelé le script directement depuis le shell de cette façon:
Si vous voulais avoir les arguments à partir de stdin, vous pourrait faire quelque chose comme ceci:
OriginalL'auteur Ned Deily