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

时间:2017-07-29 07:13:28

标签: bash forms variables 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

变量$ 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对话框和一个paned笔记本(6个标签)在同一个bash脚本中运行良好。

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分: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,因为它太先进了 对我来说,但至少我可以向你保证我的例子可行并可能触发 你问题的'WOW'时刻(只开玩笑!)