Я использую программное обеспечение MyFFVideoConverter. Я хотел бы запустить пакетный скрипт. Мой код выглядит так:

-i intro.jpg -i <input_file> -codec:v libx264 -s 1920x1080 -acodec copy -strict experimental -movflags faststart -t 00:10:10.00 <output_file>

Это работает, но я хотел бы использовать команду mylist.txt вместо -i intro.jpg . Сценарий должен выбрать только первую запись в файле mylist.txt , например, intro1.jpg , и впоследствии удалить первую запись. В следующий раз сценарий будет использовать intro2.jpg и удалить эту новую первую запись и так далее.

1 ответ1

0

Вы можете обернуть вашу текущую команду следующим образом:

for line in $(cat mylist.txt); do MyFFVideoConverter ... -i $line ; done

(замените ... всеми другими вашими вариантами)

Этот цикл будет запускать вашу команду один раз для каждой строки в mylist.txt , каждый раз используя содержимое строки в качестве параметра ключа -i .

Это ничего не удаляет из файла mylist.txt . Вы можете полностью удалить его в конце с помощью команды rm .

Если вам действительно нужно просто выбрать первую строку и удалить ее, то:

line = $(head -1 mylist.txt)
MyFFVideoConverter ... -i $line

и затем, чтобы удалить первую строку из mylist.txt я откладываю вас на https://unix.stackexchange.com/questions/96226/delete-first-line-of-a-file, который дает множество решений.

Все вышеперечисленное предполагает, что в ваших строках (именах файлов) нет пробелов или символов, интерпретируемых оболочкой (|, & и т.д.). Если это так, вам нужно быть более осторожным и защищать вещи с помощью кавычек.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .