Как поместить значение поля формы 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"

Подскажите пожалуйста что не так:(

0 ответов

Как показано в этом сообщении, для анализа параметров формы из YAD в bash/shell в Linux вы можете:

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 найти это решение.

Другие вопросы по тегам