Utilizo un script simple para crear .mp3s a partir de archivos .mp4:
#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done
El script funciona bien cuando se ejecuta desde el escritorio o se llama a través del terminal. Sin embargo, cuando se llama al script desde un script externo, no se ejecuta y devuelve
"* .mp4: No existe tal archivo o directorio".
Sospecho que el problema es con la expansión de shell, pero no puedo entender cómo solucionarlo en esta situación.
*.mp4
con ningún archivo, lo considera como un nombre de archivo literal e intenta abrir el archivo llamado*.mp4
(que es un nombre de archivo válido) y falla porque no tiene ningún archivo llamado*.mp4
en el directorio actual. Alguien podría pensar que*.mp4
siempre se expande a la lista de nombres de archivos coincidentes, que podrían estar vacíos (y en ese caso elfor
bucle no haría nada, pero no se generarían errores), este no es el caso:*.mp4
siempre se expande a algo.bash
) pero no siempre; miranullglob
/failglob
.