Есть скрипт:
#!/bin/bash
collection_in="$1"
collection_out="$2"
convert_func () {
input="$1"
corr_name=$(echo "${input/"$collection_in/"}" | sed 's/[\?\*\:]/_/g')
output="$2/$corr_name"
mkdir -p "$(dirname "$output")"
if [[ $input == *.flac ]]
then
avconv -i "$input" -c:a libvorbis -q:a 10 "${output%.flac}".ogg < /dev/null
else
cp "$input" "$output"
fi
}
export -f convert_func
export collection_in collection_out
find "$collection_in" -type f -printf '%P\n' | env SHELL=/bin/bash PARALLEL_SHELL=/bin/bash parallel -j+0 convert_func "$collection_in"/"{}" "$collection_out"
Заметил, что если в составе первого аргумента есть пробел (даже хотя я его экранирую двойными кавычками или обратным слэшем), то внутри скрипта то, что до пробела обрабатывается, как отдельная строка => скрипт не работает. При этом, если первый аргумент без пробелов, то на пробелы ниже по вложенности скрипт реагирует хорошо. Вроде как, внутри скрипта экранирование везде правильное (или нет?). Пожалуйста, помогите разобраться (ну или если у кого будет критика по коду, буду очень рад).
Заранее спасибо.