bash:从动态文件创建 ncurses 对话框单选列表,并将所选内容输出到变量



我正在努力为Clonezilla构建一个ncurses/dialog驱动的交互式shell脚本,以简化使用我们每次使用的非常特定的设置传递的图像的创建和恢复。脚本的一部分要求用户选择要恢复的图像,而我碰壁了。

我想为这部分使用对话框单选列表,以便他们只能从可用图像列表中选择单个图像文件。我动态创建图像列表并将其存储在名为.clone_images_list的文件中

我几乎一路走来,除了当用户选择文件名时,它会输出行号而不是文件名之外,我什么都工作。我已经尝试了我能想到的一切,但没有成功。

这是我到目前为止所拥有的:

#! /bin/bash
COUNT=1
IMAGELIST=""
while read i; do
IMAGELIST="$IMAGELIST $COUNT $i off"
let COUNT=COUNT+1
done < .clone_images_list
dialog --backtitle "Available Image List" 
--radiolist "Select Image To Restore" 0 0 $COUNT 
$IMAGELIST 2> .tempfile
IMAGEFILE=`cat .tempfile`
echo $IMAGEFILE

这是我的.clone_images_list的样子:

channel1.170822104015.img
channel2.170822181523.img
channel3.170822180559.img
host.170822160320.img
host.170822174917.img

此列表可长可短,并在创建新映像时更新。

为了使我的脚本正常工作,我需要将实际文件名放入一个变量中,以便稍后在脚本中使用。

寻找一些想法....

单选列表小部件返回选定的标记(即第一列(。

在这一行中

IMAGELIST="$IMAGELIST $COUNT $i off"

您将标签字段设置为数字。 如果您将其更改为

IMAGELIST="$IMAGELIST $i $i off"

那么标签将是一个文件名。

如果这样做,--no-tags选项会很有帮助,否则小部件将显示文件名两次。

最新更新