我想使用yad显示项目列表,然后对每个项目执行 shell 命令。但是,yad 似乎产生了一个似乎不是简单空格的分隔符。我需要帮助解析它的输出。如果用户选择所有三个项目,这个 bash 脚本
#!/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
应该输出
item1 item2 item3
item1
item2
item3
相反,脚本仅输出:
item1 item2 item3
item1
我正在使用这个技巧将 yad 的输出解析为一个数组。它曾经与 yad 的前身 zenity 一起工作得很好,但它似乎与 yad 一起失败了。
回显$items
到文本文件并使用 cat 读取此文本文件按预期工作:IFS=' ' read -r -a ADDR <<< $items
在上面的脚本中替换为
echo "$items" > tmpfile
IFS=' ' read -r -a ADDR <<< `cat tmpfile`
产生预期的结果。
我在这里想念什么?