Lo script Bash non funziona su Automator ma funziona dal terminale

1

Ho questo script bash che funziona perfettamente sul terminale

#!/bin/bash

for f in "$@"; do

  DIRNAME="$(dirname "$f")"

  filename=$(basename "$f")
  name="${filename%.*}"
  extension="${filename##*.}"

  /usr/local/bin/ffmpeg -i "$f" -filter_complex 'scale=1920:1080, pad=2134:1200:107:60' "$DIRNAME"/OUTPUT_"$name"."$extension"
  /usr/local/bin/ffmpeg -i OUTPUT_"$name"."$extension" -vf 'scale=1920:1080' FINAL_"$name"."$extension"

 done

Sto cercando di creare un servizio per finder che accetti i file film e li elabori utilizzando questo script. Il servizio è configurato per passare l'input a stdin. Quando seleziono i film sul Finder ed eseguo quel servizio, non succede nulla. Come ho detto, lo script funziona perfettamente da terminale.

Eventualiindizi?

Questadomandasembrasimilea ffmpeg che funziona dalla riga di comando di Terminal ma non in uno script di shell di Automator! ma applicare la risposta (percorso completo a ffmpeg ) non ha risolto il mio problema.

    
posta SpaceDog 21.11.2015 - 20:04
fonte

1 risposta

1

Oltre a specificare il percorso completo su ffmpeg , è necessario risolvere due ulteriori problemi:

  1. Sono necessari anche i percorsi dei file di output.

  2. L'opzione pass input dell'azione dello script della shell deve essere impostata su as arguments .

Loscriptfinaleèquindiquesto:

#!/bin/bashforfin"$@"; do

  DIRNAME="$(dirname "$f")"

  filename=$(basename "$f")
  name="${filename%.*}"
  extension="${filename##*.}"

  /usr/local/bin/ffmpeg -i "$f" -filter_complex 'scale=1920:1080, pad=2134:1200:107:60' "$DIRNAME"/OUTPUT_"$name"."$extension"
  /usr/local/bin/ffmpeg -i "$DIRNAME"/OUTPUT_"$name"."$extension" -vf 'scale=1920:1080' "$DIRNAME"/FINAL_"$name"."$extension"


done

Nota come il percorso è stato aggiunto a ffmpeg e anche che $DIRNAME è stato aggiunto ai file di output, che non è stato menzionato dall'altra domanda.

    
risposta data 22.11.2015 - 00:42
fonte

Leggi altre domande sui tag