J'utilise un script simple pour créer des .mp3 à partir de fichiers .mp4:
#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done
Le script fonctionne correctement lorsqu'il est exécuté à partir du bureau ou appelé via le terminal. Cependant, lorsque le script est appelé à partir d'un script externe, il ne s'exécute pas, retournant
msgstr "* .mp4: aucun fichier ou répertoire de ce type".
Je soupçonne que le problème concerne l'expansion du shell, mais je ne peux pas comprendre comment résoudre ce problème dans cette situation.
*.mp4
à aucun fichier, il le considère comme un nom de fichier littéral et essaie d'ouvrir le fichier appelé*.mp4
(qui est un nom de fichier valide) et échoue parce que vous n'avez pas de fichier appelé*.mp4
dans le répertoire courant. Quelqu'un pourrait penser que*.mp4
toujours s'étendre à la liste des noms de fichiers correspondants, qui pourrait être vide (et dans ce cas, lafor
boucle ne ferait rien, mais aucune erreur ne serait générée), ce n'est pas le cas: se*.mp4
développe toujours en quelque chose.bash
) mais pas toujours; regardeznullglob
/failglob
.