Как избежать этого в сценарии bash?

Я пытаюсь выполнить партию из 3 видеороликов, чтобы оставить ее там до утренней обработки, но кажется, что в ней есть специальные символы ... Я пытаюсь сделать это «сырым» в терминале, и он работает, но в сценарии bash это перестает работать

Пример:

args1="-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264-medium -i" args12="-r 29.97 -ss 00:40:30 -vsync 0 -vpre libx264-medium -i" args2="[in] scale=580:380 [T1],[T1] pad=720:530:0:50 (other arguments with lots of [ and ]"

На выходе он говорит

Невозможно найти подходящий формат вывода для 'scale = 580: 380' not sure почему ... как я уже сказал, команда отлично работает в командной строке, а не в скрипте

/usr/local/bin/ffmpeg "$args1" "${file}" -vf "$args2" "$args3" "${args[0]}_${startingfrom}_0001_02.mp4"
0
задан 23 April 2011 в 09:27

32 ответа

Возможно, вам стоит попытаться определить ваш args таким образом:

  args2 = '[in] scale = .....'  

(обратите внимание на одинарную цитату, а не на двойную кавычку). Скажите, как вы это делаете.

0
ответ дан 13 August 2018 в 16:14

Не помещайте в переменную несколько аргументов, она будет работать для очень простых случаев, но в противном случае вы не получите ничего, кроме скорби. Вместо этого используйте массивы. Например:

  infile = video.avi outfile = $ {infile%. *}. Mp4 # video.mp4 args = (-r 29.97 -t 00:13:30 -vsync 0 -vpre libx264  -medium -vf "[in] scale = 580: 380 [T1], [T1] pad = 720: 530: 0: 50") # ... ffmpeg -i "$ infile" "$ {args [@]}  "$ outfile"  

(Кавычки важны)

В этом случае, возможно, вам понадобится функция. Трудно сказать, так как ваш вопрос немного расплывчатый.

См. [D0] BashFAQ 50

5
ответ дан 13 August 2018 в 16:14

Другие вопросы по тегам:

Похожие вопросы: