首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Bash中正确解析yad输出

在Bash中正确解析yad输出
EN

Stack Overflow用户
提问于 2012-07-08 00:15:17
回答 1查看 2.4K关注 0票数 0

我想使用yad显示一个项目列表,然后对每个项目执行一个shell命令。然而,yad似乎产生了一个分隔符,而不是一个简单的空格。我需要帮助来解析它的输出。如果用户选择了所有三项,则此bash脚本

代码语言:javascript
复制
#!/bin/bash
items=`yad --list --separator='' --height=600 --multiple --column="Items" item1 item2 item3`

echo $items

IFS=' ' read -r -a ARRAY <<< $items
for item in "${ARRAY[@]}"; do
        echo "$item"
done

应该输出

代码语言:javascript
复制
item1 item2 item3
item1
item2
item3

相反,该脚本仅输出:

代码语言:javascript
复制
item1 item2 item3
item1

我使用this trick将yad的输出解析成一个数组。它曾经与yad的前身zenity一起工作得很好,但在yad上似乎失败了。

$items回显到文本文件中并使用cat读取该文本文件的工作方式与预期一致:将上述脚本中的IFS=' ' read -r -a ADDR <<< $items替换为

代码语言:javascript
复制
echo "$items" > tmpfile
IFS=' ' read -r -a ADDR <<< `cat tmpfile`

产生预期的结果。

这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-08 01:36:19

我觉得你把事情搞得太复杂了。

这里有一个可行的替代方法。

代码语言:javascript
复制
items=`yad --list --separator='' --height=600 --multiple --column="Items" item1 item2 item3`

echo $items

for item in $items; do
        echo "$item"
done

这是最简单和最直接的。它拆分IFS中的元素(默认情况下包括空格、制表符和换行符)

不需要创建数组,使用read或here字符串。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11376641

复制
相关文章

相似问题

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