Ho uno script bash che funziona come un thread. Ora mi piacerebbe trasformarlo in un servizio con Automator.
Input è impostato su File immagine in Automator e l'azione dello script della shell è impostata su Pass input as arguments
.
Il problema:
Automator ha due problemi:
- La funzione
- La condizione if
Tuttavia, nessun errore compare nel log e il risultato dello script della shell è vuoto:
(
""
)
Cosa fa lo script:
La funzione createDatePath
controlla se l'immagine passata è stata formattata come 2020-08-10-demo_image.jpg
e crea una cartella YEAR/MONTH/
nella directory di destinazione. La condizione se esegue azioni sull'input a seconda che si tratti di un JPEG o di un PNG e se la stringa di data è seguita da una stringa -qq-
. Questa è una versione ridotta dello script (ne ho alcune di più se le condizioni, ma non ne abbiamo bisogno qui, credo).
Lo script:
backup=/Users/me/Desktop/A/backup/
targetPath=/Users/me/Desktop/A/output/
function createDatePath {
[[ "$i" =~ ^([0-9]{4})-([0-9]{2}) ]] && \
mkdir -p "$targetPath${BASH_REMATCH[1]}/${BASH_REMATCH[2]}";
}
for i in "$@"; do
cp "$i" "$backup"
if [[ "$i" =~ ^([0-9]{4})-([0-9]{2})-([0-9]{2})-([^q]{2}).+\.((jpg)|(jpeg))$ ]]; then
createDatePath;
else
exit 0;
fi
done
Schermata:
Linkpercompletareloscriptdellashell:
Se qualcuno potesse spiegarmi perché questo non funziona e come farlo funzionare sarebbe fantastico.
PS: nello script non-Automator la prima cosa che ho fatto è stata cd
nel percorso di origine, ma dal momento che questo finirà come un servizio che prende i file come input, la mia ipotesi è che posso omettere questo (l'aggiunta di cd "$@"
non ha funzionato)