1 votes

Les scripts stateful dans Automator?

Y a-t-il un moyen d'exécuter des scripts bash étatiques dans Automator ?

J'essaie d'exécuter quelque chose en fonction de l'existence ou non d'un fichier. Avec un script bash seul dans le terminal, le code ci-dessous fonctionne et affichera la sortie correcte, en fonction de si le fichier existe ou non.

Seule une ligne de sortie par exécution du script est affichée de toute façon.

FICHIER="/Volumes/Canvio1TB/EyeTV Archive/sync.ffs_lock"
if test -f "$FICHIER"; then
    echo "$FICHIER existe"
else
  echo "$FICHIER n'existe pas"
fi

Lorsque j'exécute cela dans Automator en tant qu'action "exécuter le script shell", la sortie est :

/Volumes/Canvio1TB/EyeTV Archive/sync.ffs_lock existe

/Volumes/Canvio1TB/EyeTV Archive/sync.ffs_lock n'existe pas

Peu importe si le fichier existe ou non, le script génère les deux lignes de sortie.

S'il existe une meilleure approche, je serais ouvert à l'utiliser - je n'ai pas eu de succès avec la syntaxe d'AppleScript pour exécuter une commande basée sur l'existence ou non d'un chemin complet et d'un fichier.

2voto

user3439894 Points 52496

L'exemple suivant fonctionne pour moi dans une action Exécuter un script shell dans Automator:

f="/Volumes/Canvio1TB/EyeTV Archive/sync.ffs_lock"

if [ -f "$f" ]; then
    echo "$f existe."
else
    echo "$f n'existe pas."
fi

Note: Shell est défini sur : /bin/bash

Cela fonctionne aussi :

f="/Volumes/Canvio1TB/EyeTV Archive/sync.ffs_lock"

[ -f "$f" ] && echo "$f existe." || echo "$f n'existe pas."

Le voici en AppleScript dans une action Exécuter un script Apple:

set f to "/Volumes/Canvio1TB/EyeTV Archive/sync.ffs_lock"

tell application "System Events"
    if exists file f then
        return f & " le fichier existe." as string
    else
        return f & " le fichier n'existe pas." as string
    end if
end tell

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