Как поместить значение полей формы 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
задан 8 November 2019 в 21:03

1 ответ

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

VAR=$(echo $YAD_OUTPUT | awk 'BEGIN {FS="," } { print $1 }')

Где:

  • VAR — это имя переменной, в которой вы хотите сохранить значение записи YAD.
  • $YAD_OUTPUT не требует пояснений. В вашем случае вы назвали эту переменную "OUTPUT"
  • FS="," является значением разделителя. В вашем случае ",".
  • $1 — позиция первого --поля. В вашем случае содержимое $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 найти это решение.

0
ответ дан 18 June 2020 в 05:52

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

Похожие вопросы: