bash: 从动态文件创建一个 ncurses 对话框单选列表并将选择输出到变量
bash: Create a ncurses dialog radiolist from a dynamic file and output selection to variable
我正在为 Clonezilla 构建一个 ncurses/dialog 驱动的交互式 shell 脚本,以简化我们每次使用的非常具体的设置所传递的图像的创建和恢复。脚本的一部分要求用户 select 要恢复的图像,但我碰壁了。
我想在这部分使用 dialog radiolist,这样他们只能 select 可用图像列表中的单个图像文件。我即时创建图像列表并将其存储在名为 .clone_images_list
的文件中
我几乎一路走来,除了当用户 select 一个文件名时, 它输出行号而不是文件名 之外,我的一切都在工作。我已经尝试了所有我能想到的但没有成功。
这是我目前的情况:
.
#! /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
此列表可长可短,并会在创建新图像时随时更新。
为了让我的脚本正常工作,我需要将实际文件名放入一个变量中,以便稍后在我的脚本中使用。
寻找一些想法....
单选列表小部件 returns 选定的 标签(第一列)。
在这一行
IMAGELIST="$IMAGELIST $COUNT $i off"
您正在将 标签 字段设置为数字。如果您将其更改为
IMAGELIST="$IMAGELIST $i $i off"
那么 标签 将是一个文件名。
如果这样做,--no-tags
选项会有所帮助,否则小部件会显示文件名两次。
我正在为 Clonezilla 构建一个 ncurses/dialog 驱动的交互式 shell 脚本,以简化我们每次使用的非常具体的设置所传递的图像的创建和恢复。脚本的一部分要求用户 select 要恢复的图像,但我碰壁了。
我想在这部分使用 dialog radiolist,这样他们只能 select 可用图像列表中的单个图像文件。我即时创建图像列表并将其存储在名为 .clone_images_list
的文件中我几乎一路走来,除了当用户 select 一个文件名时, 它输出行号而不是文件名 之外,我的一切都在工作。我已经尝试了所有我能想到的但没有成功。
这是我目前的情况:
.
#! /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
此列表可长可短,并会在创建新图像时随时更新。
为了让我的脚本正常工作,我需要将实际文件名放入一个变量中,以便稍后在我的脚本中使用。
寻找一些想法....
单选列表小部件 returns 选定的 标签(第一列)。
在这一行
IMAGELIST="$IMAGELIST $COUNT $i off"
您正在将 标签 字段设置为数字。如果您将其更改为
IMAGELIST="$IMAGELIST $i $i off"
那么 标签 将是一个文件名。
如果这样做,--no-tags
选项会有所帮助,否则小部件会显示文件名两次。