提交后如何将 YAD 表单字段值放入变量中?

提交后如何将 YAD 表单字段值放入变量中?

提交后如何将 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 找到这个解决方案。

相关内容