我想用 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 "选择你的个人资料" $(for ((i = 0; i <=$(( ${#a[@]} -1 )) ; i++ )) ; do printf "\\'%s \\' %s " "${a[i]}" "${b[i]}" ; 完成)
解决方案
文件读取 $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