Ich schreibe ein Zsh-Skript, das einige Video-Codierung automatisiert. Die Datei konvertiert wird der erste Parameter an das Skript sein, die diese Zeile enthält:
ffmpeg -i $1 -ac 0 -vcodec libx264 -b:v 500k -crf 20 ${1:r}.mp4
I ${1:r}.mp4
erwartet eine Datei mit dem gleichen Namen wie meine .mov-Eingang, aber mit der .mp4 Dateierweiterung zu erstellen Ersetzen von .mov. Stattdessen erhalte ich input.mov.mp4. Warum entfernt der Modifizierer: r nicht die Dateierweiterung?
Okay, dumme Frage zuerst: es ist wirklich ein zsh Skript, können Sie es mit 'zsh' laufen und es gibt keine' #/bin/bash' oder ähnliches, richtig! ? Jetzt, mit dem aus dem Weg: Es ist ein bisschen schwer zu erraten, was schief läuft. Ist das das ganze Drehbuch? Haben Sie irgendwelche Einstellungen in '~/.zshenv' oder'/etc/zshenv' (oder vielleicht '/ etc/zsh/zshenv')? Wenn Sie 'setopt' in das Skript setzen, produziert es irgendeinen Output, wenn ja, was? – Adaephon