Pages : 1
#1 Le 18/07/2014, à 15:48
- alfirdaous
Mini script bash
Bonjour,
Je voudrais mettre un petit script afin de recevoir quelque chose comme:
d_1-Original.mp4
d_2-Original.mp4
Le code est:
#!/bin/bash
read -p "Please enter starting area : " areaStart
read -p "Please enter ending area : " areaEnd
read -p "Please enter original file name : " fileName
printf '%s\n' {"$areaStart".."$areaEnd"} | xargs -i ffmpeg -i "$fileName"_{}-Original.mp4
Le resultat est:
d_{1..2}-Original.mp4: No such file or directory
Merci a vous
Hors ligne
#2 Le 18/07/2014, à 15:55
- jplemoine
Re : Mini script bash
C'est quoi le but à l'origine ?
Je pense que ta solution n'en est pas une...
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#3 Le 18/07/2014, à 16:26
- Watael
Re : Mini script bash
salut,
les variables ne sont pas développées entre accolades, parce que ces dernières sont développées avant les premières.
avec des variables, il faut encore utiliser seq
ou, en lourdingue, une boucle avec une incrémentation.
mais je suis d'accord avec jplemoine, dis-nous en davantage sur ton projet : ce que tu as, ce que tu veux...
Dernière modification par Watael (Le 18/07/2014, à 16:28)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 18/07/2014, à 16:34
- alfirdaous
Re : Mini script bash
ce que je veux faire c'est d'effectuer un traitement de 5 fichiers videos avec cette commande, donner le debut et la fin de numerotation ainsi que le nom du fichier
ffmpeg -i INPUT.mp4 -strict experimental -vf "drawtext=fontfile='/usr/share/fonts/truetype/freefont/FreeSansBold.ttf':text='TEST':x=5:y=30:fontsize=16:fontcolor=white" -vcodec libx264 -preset medium -crf 24 -acodec copy OUTPUT.mp4
Hors ligne
#5 Le 18/07/2014, à 16:39
- Watael
Re : Mini script bash
en full bash:
read debut
read fin
for ((i=debut;i<=fin;i++)); do echo "traitement fichier #$i"; done
Dernière modification par Watael (Le 18/07/2014, à 16:41)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 18/07/2014, à 16:48
- alfirdaous
Re : Mini script bash
pas moyen d'utiliser
printf '%s\n' {001..005} | xargs -i
Hors ligne
#7 Le 19/07/2014, à 14:00
- alfirdaous
Re : Mini script bash
j'ai essaye avec for, ca marche bien, juste un soucis dans cette commande:
read -p "Please enter starting area : " areaStart
read -p "Please enter ending area : " areaEnd
read -p "Please enter original file name : " fileName
read -p "Please enter texte size : " textSize
read -p "Please enter output PNG file : " filePNG
for ((i=areaStart;i<=areaEnd;i++));
do
printf -v f '%03d' $i
n=0; for offset in 200 220 240 260 280 320 340 360 380 400; do n=$((n+1)); ffmpeg -itsoffset -$offset -i "$fileName"_$f.png -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 "$filePNG"_"$f"_$n.png; done
j'obtiens ce resultat:
n=0; for offset in 200 220 240 260 280 320 340 360 380 400; do n=1; ffmpeg -itsoffset - -i FILE_001.png -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 PNG_001_.png; done && ffmpeg -i FILE_001.mp4 -vn -ar 44100 -ac 2 -ab 128 -f mp3 001.mp3
Anomalies au niveau des variables "-$offset" et "$n.png"
Merci pour votre aide
Hors ligne
#8 Le 19/07/2014, à 18:58
- pingouinux
Re : Mini script bash
Bonjour,
Dans ton script en #7, il manque le done final. Peux-tu montrer le script exact que tu as lancé ?
j'obtiens ce resultat:
n=0; for offset in 200 220 240 260 280 320 340 360 380 400; do n=1; ffmpeg -itsoffset - -i FILE_001.png -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 PNG_001_.png; done && ffmpeg -i FILE_001.mp4 -vn -ar 44100 -ac 2 -ab 128 -f mp3 001.mp3
Comment as-tu obtenu cette ligne ?
Y a-t-il un message d'erreur ?
Hors ligne
#9 Le 19/07/2014, à 19:03
- alfirdaous
Re : Mini script bash
voici le script, j'ai le soucis seulement au niveau des variables:
#!/bin/bash
read -p "Please enter starting area : " areaStart
read -p "Please enter ending area : " areaEnd
read -p "Please enter original file name : " fileName
read -p "Please enter texte size : " textSize
read -p "Please enter output PNG file : " filePNG
for ((i=areaStart;i<=areaEnd;i++));
do
printf -v f '%03d' $i
echo "ffmpeg -i Original/$fileName"_"$f-Original.mp4 -strict experimental -vf "drawtext=fontfile='/usr/share/fonts/truetype/freefont/FreeSansBold.ttf':text='www.test.com':x=5:y=30:fontsize="$textSize":fontcolor=white" -vcodec libx264 -preset medium -crf 24 -acodec copy Done/"$fileName"_$f-Done.mp4 && MP4Box -add Done/"$fileName"_$f-Done.mp4 "$fileName"_$f.mp4 && ffmpeg -itsoffset -330 -i "$fileName"_$f.mp4 -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 "$filePNG"_$f.png && n=0; for offset in 200 220 240 260 280 320 340 360 380 400; do n=$((n+1)); ffmpeg -itsoffset -$offset -i "$fileName"_$f.png -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 "$filePNG"_"$f"_$n.png; done && ffmpeg -i "$fileName"_$f.mp4 -vn -ar 44100 -ac 2 -ab 128 -f mp3 $f.mp3";
done;
Hors ligne
#10 Le 19/07/2014, à 19:46
- pingouinux
Re : Mini script bash
Ton script est illisible. Tu devrais le montrer tel qu'il devrait être (sans le echo), et en séparant les commandes (une par ligne). Tu peux déjà vérifier le bon positionnement des " ".
Hors ligne
#11 Le 19/07/2014, à 20:06
- Watael
Re : Mini script bash
la "dernière" boucle `for' n'est évidemment pas exécutée dans le `echo' :\
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 20/07/2014, à 09:36
- hcm
Re : Mini script bash
Bonjour,
Une astuce pour t'aider à mettre au point ton script.
Place avant les commandes read la ligne suivante
set -x
et relance ton script.
Tu verras, instruction après instruction, comment se comporte l'interpréteur bash.
Tu pourras ainsi mieux comprendre où se trouve ton problème. Si tu ne trouves pas la solution par toi même, poste nous les traces de lancement de ton script, ça nous aidera à comprendre où ça coince.
Une fois le problème corrigé, tu pourras retirer cette ligne de ton code ou la commenter pour désactiver ces traces de débogage.
Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33
Hors ligne
#13 Le 20/07/2014, à 09:53
- credenhill
Re : Mini script bash
hello
[RESOLU]Repeter un code
Hors ligne
#14 Le 20/07/2014, à 18:04
- alfirdaous
Re : Mini script bash
ce que je cherche exactement est le comportement des variables, j'ai des soucis la dans
Hors ligne
Pages : 1