2016-01-26 7 views
0

Я пытаюсь отредактировать сценарий, который я нашел в Интернете. Сценарий должен преобразовать все файлы в каталоге и поместить их в другом каталоге (с помощью ручного тормоза), но она проходит только первое слово файла, а не последующие слова или расширение файлаКонвертировать файлы и размещать их в другом каталоге

#!/bin/bash 
SRC="/var/www/mediacenter/convert" 
DEST="/var/www/mediacenter/converted" 
DEST_EXT=mp4 
HANDBRAKE_CLI=HandBrakeCLI 
#PRESET = " -e x264 -E av_aac -q 22" 

for FILE in "$SRC"/* 
do 
filename=$(echo $FILE | cut -f 1 -d '.') 
extension="${filename##*.}" 
filename="${filename%.*}" 
echo $filename.$DEST_EXT 
$HANDBRAKE_CLI -i "$FILE" -o $FILE.$DEST_EXT $PRESET 
done 

эха работ и я пробовал процитировать его, но не могу найти правильную комбинацию.

+0

добавить 'set -x' в строку перед' $ HANDBRAKE_CLI' и 'set + x' после него. Вы увидите строки с ведущим знаком '+', и все строки будут «нормализованы» для использования одиночных кавычек. Затем вы увидите, какая команда выполняется, и лучше поймите, где можно изменить/исправить ваши предложения кавычек или переменных. Удачи. – shellter

+2

В общем, задавая вопрос, попробуйте создать заголовок, описывающий проблему, а не ваш статус. Таким образом, другие люди могут найти проблему и найти ваш вопрос, и люди, которые знают ответ, увидят его в списке и смогут найти и ответить на него. Сказать, что это «проблема с скриптом начинающего bash», помогает знать один. – dimo414

ответ

2

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

$HANDBRAKE_CLI -i "$FILE" -o "$FILE.$DEST_EXT" $PRESET