Yad 中的 Bash 变量。
亚德'!'字段分隔符未分隔字段。
在研究了 yad 手册页和其他 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 脚本中运行良好。
VAR1='test1!test2!test3' ANS=$(yad --form --field="combo1:CBE" '测试1!测试2!测试3' \ --field="无编辑组合:CB" 'test1!test2!test3' \ --field="combo2:CBE" "$VAR1" )
selected=$(echo $ANS | awk ' { print $1 $2 $3 }' | tr '|' " ”) 回显$已选择
当字符串包含 ! 时,必须使用单引号。作为 否则 yad 会以不同于字段分隔符的方式对待它。
我知道我没有使用你的 $cam1 和 $cam2 var,因为它太先进了 对我来说,但至少我可以向你保证我的例子有效并且可能会触发 解决您的问题的“哇”时刻(开玩笑!)
这是你的问题:
检查变量
echo $cam1 $cam2 450D N3300
你看,如果你单独检查它们,你会得到这个:
echo $cam1
450D N3300
echo $cam2
也就是说,
$cam1
包含“450D
N3300
" 和 $cam2
包含 ""。在这两种情况下 $1
是文件的第一个字段,而 $11
……什么都不是。如果你想使用 awk 来实现这一点,那么你需要在中检查 NR
条件。
cam1=$(awk 'NR==1 { print $1 }' "$cam_list")
cam2=$(awk 'NR==2 { print $1 }' "$cam_list")