Shell中实现一个选择菜单

Zss 发表于:

我需要做的是将远程服务器的一个目录下的所有文件名给生成一个对应的选择菜单

使用的方法是操作远程服务器将其目录下的文件版本过滤信息后生成一个list文件,再在本地将其下载下来通过依次遍历文件的内容添加index来实现选择列表

或者直接将获取到版本信息过滤后一次加入到一个数组中,同样是加上index,最后使用这个数组依次遍历出来

###########          Server配置       ###########
  
    server_path="/home/OnPremiseBuild"
    server_ip="10.6.161.252"
    server_name="root"
    server_password="admin!234"

###########           Host配置         ##########
  
    host_path="/home/OnPremiseBuild"

########### 远程拉取文件目录下的镜像名  ###########
       
    stty erase ^H
    sshpass -p ${server_password} ssh ${server_name}@${server_ip} -o StrictHostKeyChecking=no <<DOC
    if [ -f ${server_path}/file_list.txt ];then
       rm -f ${server_path}/file_list.txt
    fi    
    ls ${server_path}/ | grep altaicare > ${server_path}/file_list.txt 2>&1  
    `exit`
DOC

############# 通过拉取的文件生成可以安装的版本  ############
   
    if [ ! -d ${host_path} ];then    
         mkdir ${host_path}
    fi
    sshpass -p ${server_password} scp ${server_name}@${server_ip}:${host_path}/file_list.txt ${host_path} 
    echo -e "\n\n------->>>  Installer OnPremise   <<<-------"
    index=1
    file_list=()
    echo -e "Option list:"
    while read message
    do
        file_list[${index}]=${message}
        echo -e "(${index}). ${message}"
        index=$((index+1))
    done < /${host_path}/file_list.txt
    echo -e "---------------------------------------------"
    echo -e "Input your choice:"
    read user_choice
    echo -e "Your choice is No.${user_choice}---${file_list[${user_choice}]}"
------->>>  Installer OnPremise   <<<-------
Option list:
(1). altaicare_2_1_1_206.tar.gz
(2). altaicare_2_1_1_300.tar.gz
(3). altaicare_2_1_1_402.tar.gz
(4). altaicare_2_1_1_509.tar.gz
(5). altaicare_2_1_1_tttt.tar.gz
(6). altaicare_2_1_1_VM1002.tar.gz
(7). altaicare_2_1_1_VM601.tar.gz
(8). altaicare_2_1_1_VM602.tar.gz
(9). altaicare_2_1_1_VM706.tar.gz
(10). altaicare_2_1_1_VM801.tar.gz
(11). altaicare_2_1_1_VM902.tar.gz
(12). altaicare_vm_1_2_0_0_VM702.tar.gz
---------------------------------------------
Input your choice:
6
Your choice is No.6---altaicare_2_1_1_VM1002.tar.gz