提交后如何将 YAD 表单字段值放入变量中?
我的脚本实际上是这样的:
#!/bin/bash
default_jpg='/';
default_mp3='/';
default_resolution='1920:1080';
default_filename="/";
OUTPUT=$(yad \
--title="JPG and MP3 to MP4" \
--form \
--text="Options" \
--separator="," \
--field="JPG:FL" \
--field="MP3:FL" \
--field="Resolution" \
--field="MP4 (Output):SFL" \
--button="Create MP4":1 \
"$default_jpg" \
"$default_mp3" \
"$default_resolution" \
"$default_filename" \
) accepted=$?
if ((accepted == 1)); then
jpgfile=$( awk -F, '{print $1}' <<<$OUTPUT)
mp3file=$( awk -F, '{print $2}' <<<$OUTPUT)
resolution=$(awk -F, '{print $3}' <<<$OUTPUT)
filename=$( awk -F, '{print $4}' <<<$OUTPUT)
echo $jpgfile $mp3file $resolution $filename
fi
我无法将表单字段的值放入变量中。如果这可行,而不是仅仅回显变量,我想在以下命令中使用它们:
ffmpeg -r 1 -loop 1 -i "$jpgfile" -i "$mp3file" -acodec copy -r 1 -shortest -vf scale=$resolution "$filename"
请告诉我哪里出了问题 :(
答案1
如图所示这个帖子,要在 Linux 上的 bash/shell 中解析来自 YAD 的表单参数,您可以:
VAR=$(echo $YAD_OUTPUT | awk 'BEGIN {FS="," } { print $1 }')
在哪里:
VAR
是您想要存储 YAD 条目值的变量的名称。$YAD_OUTPUT
是不言自明的。在您的例子中,您将该变量命名为OUTPUT
“FS=","
是分隔符值。在本例中为“,
”。$1
是第一个 的位置。在你的情况下,是( )--field
的内容。$default_jpg
/
以下是更正后的示例:
#!/bin/bash
default_jpg='/';
default_mp3='/';
default_resolution='1920:1080';
default_filename="/";
OUTPUT=$(yad \
--title="JPG and MP3 to MP4" \
--form \
--text="Options" \
--separator="," \
--field="JPG:FL" \
--field="MP3:FL" \
--field="Resolution" \
--field="MP4 (Output):SFL" \
--button="Create MP4":1 \
"$default_jpg" \
"$default_mp3" \
"$default_resolution" \
"$default_filename" \
) accepted=$?
if ((accepted == 1)); then
jpgfile=$(echo $OUTPUT | awk 'BEGIN {FS="," } { print $1 }')
mp3file=$(echo $OUTPUT | awk 'BEGIN {FS="," } { print $2 }')
resolution=$(echo $OUTPUT | awk 'BEGIN {FS="," } { print $3 }')
filename=$(echo $OUTPUT | awk 'BEGIN {FS="," } { print $4 }')
echo $jpgfile $mp3file $resolution $filename
fi
这个答案的开始是为了帮助 Google 找到这个解决方案。