Bash - 在 yad 形式组合框中使用变量

问题描述 投票:0回答:2

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"

yad output

或者这样

"$cam1"!"$cam2"

同样的结果

进一步将变量括在双引号中仅显示 $cam1...

""$cam1"!"$cam2""

yad output

其行为与复选框相同。例如;

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 脚本中运行良好。

bash forms variables yad
2个回答
2
投票

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,因为它太先进了 对我来说,但至少我可以向你保证我的例子有效并且可能会触发 解决您的问题的“哇”时刻(开玩笑!)


0
投票

这是你的问题:

检查变量

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")
© www.soinside.com 2019 - 2024. All rights reserved.