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")