首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >yad form组合框中的Bash -使用变量

yad form组合框中的Bash -使用变量
EN

Stack Overflow用户
提问于 2017-07-29 07:13:27
回答 2查看 2.2K关注 0票数 1

Yad中的Bash变量。

yad‘’!字段分隔符不分隔字段。

在研究了yad手册页面和其他yad资源的其他问题后,我对此感到困惑。

我试图在yad表单组合框中使用变量。

变量从列表(cam_list)中读取--在本例中,列出了两个摄像机模型,每个模型后面有9个参数(在本例中没有设置,对问题不重要)

代码语言:javascript
复制
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声明如下--文本文件中的第一项和第十一项。

代码语言:javascript
复制
cam1=$(awk 'BEGIN { FS = " " } ; { print $1 }' $cam_list)
cam2=$(awk 'BEGIN { FS = " " } ; { print $11 }' $cam_list)

校验变量

代码语言:javascript
复制
 echo $cam1 $cam2
 450D N3300

将$cam1和$cam2放入yad表单字段

代码语言:javascript
复制
yad --form --center --text="test" \
                --field="Camera":CB \
                    "$cam1!$cam2"

yad输出

或者是这边

代码语言:javascript
复制
"$cam1"!"$cam2"

相同结果

进一步将双引号中的变量括起来只显示$cam1 ..。

代码语言:javascript
复制
""$cam1"!"$cam2""

yad输出

复选框的行为也是一样的。例如;

代码语言:javascript
复制
yad --form --center --title="$TITLE" \
        --text="Please select a camera" \
        --field="$cam1":CHK \
            'TRUE!FALSE' \
        --field="$cam2":CHK \
            'TRUE!FALSE'

没有足够的声誉来发布第三个图像,但是扩展的变量被分组到一个复选框中,而第二个复选框并不与变量-怪异关联。

这是一个令人头痛的问题,但它有效--变量正确地展开。

代码语言:javascript
复制
--field="ImageMagick threads":NUM \
            "$defaultcores"!1.."$CORES"!1!0 \

我不确定这是yad问题还是我的申请。在相同的bash脚本中,我有大量的yad对话框和一个窗格笔记本(6个标签),运行良好。

EN

回答 2

Stack Overflow用户

发布于 2018-06-14 07:21:10

VAR1 1=‘test2 1!test2!test3’ANS=$(yad --form -field=“combo1:CBE”'test1!test2!test3‘-field=“no-编辑组合框:CB”!test1!test2!test3’-field=“combo2:CBE”"$VAR1“) Selected=$(回波$ANS \ awk‘{打印$1 $2 $3 }’\ tr‘\\n’\n)回波$selected

当字符串包含时,使用单引号是必要的!否则,yad将与字段分隔符不同地对待它。

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

票数 1
EN

Stack Overflow用户

发布于 2017-07-30 02:03:05

这是你的问题:

校验变量 回波$cam1 $cam2 450 D N3300

你看,如果你单独检查它们,你会得到以下信息:

代码语言:javascript
复制
echo $cam1
450D N3300
echo $cam2

也就是说,$cam1包含“450 D\n 3300\n”,而$cam2包含"“。在这两种情况下,$1是文件的第一个字段,而$11是.没什么。如果您想为此使用awk,那么需要在此条件下检查NR

代码语言:javascript
复制
cam1=$(awk 'NR==1 { print $1 }' "$cam_list")
cam2=$(awk 'NR==2 { print $1 }' "$cam_list")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45386499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档