#1 Le 10/07/2011, à 17:11
- caracolito
Comment Transformer commandes en script
Bonjour,
J'ai les deux commandes ci-dessous que je voudrai transformer en un script que j'appelerai: Stabiliser video
transcode -J stabilize -i input.file
transcode -J transform -i input.file -y xvid -o output-S.file
le probleme est que je ne sais pas comment faire pour que les fichiers input.file et output-S.file soient crées en fonction de la video sur laquelle j'ai cliqué.
merci de votre aide
Pierre
La mente es igual que un Paracaidas, Solo sirve si se abre . A.Eistein
Hors ligne
#2 Le 10/07/2011, à 17:52
- wido
Re : Comment Transformer commandes en script
Bonjour, essaye ça:
#!/bin/bash
#
for i in "$@"
do
transcode -J stabilize -i "$i"
transcode -J transform -i "$i" -y xvid -o "${i%.*}".xvid
done
Hors ligne
#3 Le 10/07/2011, à 18:25
- caracolito
Re : Comment Transformer commandes en script
Merci Wido,
J'ai essayé, ca fonctionne a part que:
mes fichiers en sortie on une extension .xvid et moi je voudrai une extension nomfichierorigina-S.extensionoriginale
je n'arrive pas a me debrouiller dans ce charabia "${i%.*}".xvid
La mente es igual que un Paracaidas, Solo sirve si se abre . A.Eistein
Hors ligne
#4 Le 10/07/2011, à 20:57
- wido
Re : Comment Transformer commandes en script
#!/bin/bash
#
for i in "$@"
do
transcode -J stabilize -i "$i"
transcode -J transform -i "$i" -y xvid -o "$i"
done
tout simplement
Hors ligne
#5 Le 10/07/2011, à 21:49
- Bousky
Re : Comment Transformer commandes en script
À la place de
for i in "$@"
do
…
done
je préfère
while "$1" ; do
…
shift
done
(et remplacer $i par $1 dans la boucle)
« for » n'aime pas trop les espaces (dans les noms de fichiers ici) et je ne suis pas sûr du comportement de "$@". Je dis ça mais ça peut très bien marcher, à voir…
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#6 Le 10/07/2011, à 21:55
- wido
Re : Comment Transformer commandes en script
J'utilise ça pour convertir des vidéos et ça fonctionne très bien.
Hors ligne
#7 Le 10/07/2011, à 21:56
- Bousky
Re : Comment Transformer commandes en script
Tu as testé avec des fichiers contenant des espaces ?
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#8 Le 12/07/2011, à 16:44
- johndo
Re : Comment Transformer commandes en script
À la place de
for i in "$@" do … done
je préfère
while "$1" ; do … shift done
(et remplacer $i par $1 dans la boucle)
« for » n'aime pas trop les espaces (dans les noms de fichiers ici) et je ne suis pas sûr du comportement de "$@". Je dis ça mais ça peut très bien marcher, à voir…
ça revient exactement au même !
"$@" équivant à "$1" "$2" ..."$j" (avec j=$#)
l'utilisation des " avec $@ protège les espaces et sauts de ligne...
mais la méthode la plus condensée est :
#!/bin/bash
for i
do
...
done
lorsque le "in" de "for" n'est pas précisé, la liste des arguments positionnels est utilisée.
Hors ligne
#9 Le 12/07/2011, à 17:13
- Bousky
Re : Comment Transformer commandes en script
mais la méthode la plus condensée est :
#!/bin/bash for i do ... done
lorsque le "in" de "for" n'est pas précisé, la liste des arguments positionnels est utilisée.
Bon à savoir ! Et je préfère aussi éviter de jouer avec $IFS (qui n'est pas une commande mais une variable) quand il existe un autre moyen…
Sinon gardons en mémoire que comment faire la boucle n'est pas exactement le sujet initial…
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#10 Le 12/07/2011, à 17:58
- wido
Re : Comment Transformer commandes en script
Au final j'avais aussi bon?
Hors ligne