Yad 中的 Bash 变量。
yad '!' 字段分隔符未分隔字段。
在研究了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
变量 $cam 1 和 $cam 2 声明如下 - 文本文件中的第 1 个和第 11 个条目。
cam1=$(awk 'BEGIN { FS = " " } ; { print $1 }' $cam_list)
cam2=$(awk 'BEGIN { FS = " " } ; { print $11 }' $cam_list)
检查变量
echo $cam1 $cam2
450D N3300
将 $cam 1 和 $cam 2 放入 yad 表单字段
yad --form --center --text="test"
--field="Camera":CB
"$cam1!$cam2"
矢场输出
或者这样
"$cam1"!"$cam2"
相同的结果
进一步将变量括在双引号中仅显示 $cam 1...
""$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 问题还是我的应用程序。我有大量的 yad 对话框和一个平移笔记本(6 个选项卡(,在同一个 bash 脚本中运行良好。
VAR1='test1!test2!test3' ANS=$(yad --form --field="combo1:CBE" 'test1!test2!test3' \ --field="no-edit combo:CB" 'test1!test2!test3' \ --field="combo2:CBE" "$VAR 1" (
selected=$(echo $ANS | awk ' { print $1 $2 $3 }' | tr '|'""( 回声$selected
当字符串包含 ! as 时,必须使用单引号 否则,YAD 的处理方式与字段分隔符的处理方式会有所不同。
我知道我没有使用您的 $cam 1 和 $cam 2 var,因为它太高级了 对我来说,但至少我可以向你保证我的例子有效并且可能会触发 为您的问题提供"哇"时刻(开玩笑!
这是你的问题:
检查变量
echo $cam1 $cam2 450D N3300
你看,如果你单独检查它们,你会得到这个:
echo $cam1
450D N3300
echo $cam2
也就是说,$cam1
包含"450DN3300",$cam2
包含"。在这两种情况下,$1
是文件的第一个字段,$11
是...无。如果要为此使用 awk,则需要检查条件中的NR
。
cam1=$(awk 'NR==1 { print $1 }' "$cam_list")
cam2=$(awk 'NR==2 { print $1 }' "$cam_list")