Я хотел бы создать меню с kdialog, как это
kdialog --menu "choose your profile" "\"-vcodec mpeg2\"" "mpeg"
"\"vcodec stuff -ab 100ak\"" "avi" "\"-acodec mp3 -ab 128k"\" "mp3"
сейчас
массив a содержит параметры
массив b содержит имя профиля
кажется, что у kdialog есть какая-то проблема с "-ab", обычно кажется, что он принимает -stuff как параметр, поэтому он должен быть "\" - vcodec mpeg2 \ "".
В основном моя проблема - это проблема цитирования, я использовал printf, но не могу ее получить
это мой код:
a = (- vcodec mp3 -ab 128k, -vcodec mpeg2video -b 1200k -ab 128k -acodec mp3 -r 25 -ar 44100); b = (mp3, mpg); eval kdialog --menu "выбрать свой профиль" $ (для ((i = 0; i <= $ (($ {# a [@]} -1)); i ++)); do printf "\\ '% s \\ '% s "" $ {a [i]} "" $ {b [i]} "; готово) </p>
решение
файл для чтения $ HOME / FFmpeg_profiles.lst
mpeg -vcodec mpeg2 -ab 1000k
avi -vcodec avi -ab 1000k
mp3 -acodec mp3 -ab 128k
скрипт, который я сделал
function_load_profiles(){
k=0
while read line; do
nameprofile[$k]="$(echo "$line" | awk '{print $1}')"
ffmpegoptionprofile[$k]="$(echo "$line" | awk '{ for(b=2; b<=NF; b++) {printf("%s ", $b)} } ' )"
k=$(( $k+1 ))
done < "$HOME/FFmpeg_profiles.lst"
}
function_load_profiles
ARGS="--menu \"choose your profile\" --"
for ((i=0; i<${#nameprofile[@]}; i++)); do
ARGS="$ARGS \"${ffmpegoptionprofile[$i]}\" \"${nameprofile[$i]}\""
done
SELECTED_OPTIONS=$(echo $ARGS | xargs kdialog)
echo $SELECTED_OPTIONS