Bash - 在 yad 表单组合框中使用变量



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

最新更新