1

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 问题还是我的应用程序。在同一个 bash 脚本中,我有大量的 yad 对话框和一个运行良好的窗格笔记本(6 个选项卡)。

4

2 回答 2

0

这是你的问题:

检查变量

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")
于 2017-07-30T02:03:05.463 回答
0

VAR1='test1!test2!test3' ANS=$(yad --form --field="combo1:CBE" 'test1!test2!test3' \ --field="no-edit combo:CB" 'test1!test2 !test3' \ --field="combo2:CBE" "$VAR1" )

selected=$(echo $ANS | awk ' { print $1 $2 $3 }' | tr '|' "\n") echo $selected

当字符串包含 ! 时,必须使用单引号。否则 yad 会以不同于字段分隔符的方式处理它。

我知道我没有使用您的 $cam1 和 $cam2 var,因为它对我来说太先进了,但至少我可以向您保证我的示例有效,并且可能会为您的问题触发“哇”时刻(开个玩笑!)

于 2018-06-14T07:21:10.920 回答