Как поместить значение полей формы 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"
Скажите, пожалуйста, что не так: (
Как показано в этом посте, для разбора параметров формы из 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 найти это решение.