Ich benutze ein einfaches Skript, um .mp3s aus .mp4-Dateien zu erstellen:
#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done
Das Skript läuft einwandfrei, wenn es vom Desktop ausgeführt oder über das Terminal aufgerufen wird. Wenn das Skript jedoch von einem externen Skript aufgerufen wird, kann es nicht ausgeführt werden und kehrt zurück
"* .mp4: Keine solche Datei oder kein solches Verzeichnis".
Ich vermute, dass das Problem bei der Shell-Erweiterung liegt, kann mich aber nicht darum kümmern, wie ich es in dieser Situation beheben kann.
*.mp4
einer Datei übereinstimmen kann, wird sie als wörtlicher Dateiname betrachtet und versucht, die aufgerufene Datei*.mp4
(die ein gültiger Dateiname ist) zu öffnen. Dies schlägt fehl, da Sie keine Datei haben*.mp4
im aktuellen Verzeichnis aufgerufen . Jemand könnte denken, dass*.mp4
immer auf die Liste der übereinstimmenden Dateinamen erweitert wird, die leer sein könnten (und in diesem Fall würde diefor
Schleife nichts tun, aber keine Fehler werden ausgelöst), dies ist nicht der Fall:*.mp4
erweitert sich immer zu etwas.bash
), aber nicht immer; schau dirnullglob
/ anfailglob
.