使用输入文件在shell脚本中创建一个对话框,每行一个项目?

时间:2012-08-07 00:20:03

标签: linux bash shell scripting

我正在使用此格式的CURL检索项目列表到文件中:

USA, Colorado, Denver
USA, Colorado, Denver (LOC1 S3) 
USA, Florida 
USA, Florida (LOC1 S2) 

我需要在对话框中显示该列表(例如使用Zenity)并选择一行然后将其用作命令中的变量,例如

selloc = *prompt here*
dosomething "$selloc"

将执行

dosomething "USA, Colorado, Denver (LOC1 S3)"

我该怎么做?

2 个答案:

答案 0 :(得分:2)

#!/bin/sh
mapfile -t bravo < alpha.txt
select charlie in "${bravo[@]}"
do
  break
done
echo "$charlie"

输出:

1) USA, Colorado, Denver            3) USA, Florida
2) USA, Colorado, Denver (LOC1 S3)  4) USA, Florida (LOC1 S2)
#? 2
USA, Colorado, Denver (LOC1 S3)

答案 1 :(得分:1)

http://linux.byexamples.com/archives/265/a-complete-zenity-dialog-examples-2/举例说明如何使用Zenity显示“广播列表”或“复选框列表”对话框。

selloc=$(zenity  --list  --text "Pick a Location" --radiolist  \
    --column "Pick" --column "Location" \
      TRUE            "USA, Colorado, Denver" \
      FALSE           "USA, Colorado, Denver (LOC1 S3)" \
      FALSE           "USA, Florida" \
      FALSE           "USA, Florida (LOC1 S2)"
dosomething "$selloc"

使用xargseval可以从文件中获取选项列表。

selloc=$(eval zenity --list --text \"Pick a Location\" --radiolist \
    --column \"\" --column Location $(curl -s http://example.com/list.txt |
        sed 's/.*/FALSE "&"/;1s/^FALSE /TRUE /'))