Bash - использование переменных в поле со списком Яд

Переменные Bash в Яде.

Яд '!' разделитель полей не разделяет поля.

Изучив другие вопросы на странице справочника yad и других ресурсах yad, я оказался в тупике.

Я пытаюсь использовать переменные в поле со списком Яд формы.

Переменные считываются из списка (cam_list) - в этом случае перечислены две модели камер, за которыми следуют девять параметров - (в этом случае не задано и не важно для вопроса)

450D 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
N3300 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

Переменные $cam1 и $cam2 объявляются следующим образом - 1-я и 11-я записи в текстовом файле.

cam1=$(awk 'BEGIN { FS = " " } ; { print $1 }' $cam_list)
cam2=$(awk 'BEGIN { FS = " " } ; { print $11 }' $cam_list)

Проверьте переменные

 echo $cam1 $cam2
 450D N3300

Поместите $cam1 и $cam2 в поля формы yad

yad --form --center --text="test" \
                --field="Camera":CB \
                    "$cam1!$cam2"

выход Яда

Или так

"$cam1"!"$cam2"

Тот же результат

Дальнейшее заключение переменных в двойные кавычки показывает только $cam1...

""$cam1"!"$cam2""

выход Яда

Поведение то же самое с флажками. Например;

yad --form --center --title="$TITLE" \
        --text="Please select a camera" \
        --field="$cam1":CHK \
            'TRUE!FALSE' \
        --field="$cam2":CHK \
            'TRUE!FALSE'

Репутации недостаточно для публикации третьего изображения, но расширенные переменные сгруппированы в один флажок, а второй флажок не связан с переменной - странно.

Это была головная боль, но она работает - переменные расширяются правильно

--field="ImageMagick threads":NUM \
            "$defaultcores"!1.."$CORES"!1!0 \

Я не уверен, является ли это проблемой Яда или моим заявлением. У меня есть куча диалогов Yad и записная книжка (6 вкладок), которая работает хорошо, в том же сценарии Bash.

2 ответа

VAR1='test1! Test2! Test3' ANS=$(yad --form --field="combo1:CBE" 'test1! Test2! Test3' \ --field="комбинирование без редактирования:CB" 'test1! Test2!! test3 '\ --field = "combo2: CBE" "$ VAR1")

selected = $ (echo $ ANS | awk '{print $ 1 $ 2 $ 3}' | tr '|' "\ n") echo $ selected

Использование одинарных кавычек необходимо, когда строка содержит! в противном случае yad будет относиться к этому иначе, чем к разделителю полей.

Я знаю, что я не использую ваш $ cam1 и $ cam2 var, так как он слишком продвинут для меня, но, по крайней мере, я могу заверить вас, что мой пример работает и может вызвать "ВАУ" момент для вашей проблемы (только шучу!)

Это ваша проблема:

Проверьте переменные

echo $cam1 $cam2
450D N3300

Видите ли, если вы проверите их по отдельности, вы получите это:

echo $cam1
450D N3300
echo $cam2

То есть, $cam1 содержит "450D\nN3300\n" и $cam2 содержит "". В обоих случаях $1 это первое поле файла, и $11 это... ничего. Если вы хотите использовать awk для этого, вам нужно проверить NR в состоянии.

cam1=$(awk 'NR==1 { print $1 }' "$cam_list")
cam2=$(awk 'NR==2 { print $1 }' "$cam_list")
Другие вопросы по тегам