Forum Informatica Libera
[Risolto] Lo script bash non esegue il ciclo while - Versione stampabile

+- Forum Informatica Libera (https://www.ergosumracalmuto.org/informaticalibera/forum)
+-- Forum: Software (https://www.ergosumracalmuto.org/informaticalibera/forum/forumdisplay.php?fid=11)
+--- Forum: Macro, scripting e programmazione generica (https://www.ergosumracalmuto.org/informaticalibera/forum/forumdisplay.php?fid=14)
+--- Discussione: [Risolto] Lo script bash non esegue il ciclo while (/showthread.php?tid=2269)

Pagine: 1 2


RE: Lo script bash non esegue il ciclo while - Sargon6 - 23/10/2023

(23/10/2023, 13:16)m3nhir Ha scritto: [quote pid="18555" dateline="1698003607"]
Sargon6
Codice:
./elaboraLista03.txt: riga 8: -4: expressione di sottostringa < 0
Se nessuno ha un'idea su cos'hanno che non va questi 3 script, mi sa che mi dovrò accontentare della soluzione con script intermedio.
A cosa serve il parametro "-4"? potrebbe essere la causa dell'errore (forse non viene correttamente interpretato)
[/quote]

La riga 8 contiene l'istruzione
Codice:
    OUT='elaborato-'${IN::-4}'-crop'${IN:(-4)} # Imposta nome ed estensione del file audiovisivo elaborato
L'istruzione ${IN::-4} equivale al contenuto della variabile IN meno gli ultimi 4 caratteri.
L'istruzione ${IN:(-4)} equivale ai soli 4 caratteri più a destra contenuti nella variabile IN.


RE: [Risolto] Lo script bash non esegue il ciclo while - Sargon6 - 25/10/2023

Risolto con ciclo for!
Ho preso ispirazione dal sito
http://www.pluto.it/files/ildp/guide/abs/loops.html
ed ho ideato questo script:
Codice:
#!/bin/bash
# ./elaboraElenco.txt # Comando da impartire per avviare lo script da terminale
for IN in 20231005_224603.mp4 20231012_223758.mp4 20231019_230246.mp4 # Lista files multimediali da elaborare
do
    OUT='prefisso-'${IN::-4}'-suffisso'${IN:(-4)} # Imposta nome ed estensione del file audiovisivo elaborato
    Y=$((480+0))        # Imposta l'altezza del file audiovisivo elaborato
    X=$((Y*3/2))        # Imposta la larghezza del file audiovisivo elaborato
    X1=300            # Imposta la distanza dal lato sinistro
    Y1=100            # Imposta la distanza dal lato superiore
    COMANDO='ffmpeg -i '$IN' -vf crop='$X':'$Y':'$X1':'$X2' -acodec copy '$OUT # Costruisce il comando
    $COMANDO          # Impartisce il comando
done
L'elenco di files multimediali da elaborare, è trascritto nella stessa riga ove inizia il ciclo for; in questo modo, non occorre né predisporre un ulteriore file di testo che contenga l'elenco dei files multimediali da elaborare, né creare un ulteriore file di testo eseguibile che contenga l'elenco dei comandi da eseguire.