Shell脚本根据文本文件中提到的文件名创建case语句

时间:2014-01-21 11:03:01

标签: shell

我有一个shell脚本的用例,我希望用户选择文件中提到的文件。该选项可用于使用其他命令安装所选包。 我成功地在目录中创建了所需文件的列表。 我需要帮助在用户可以选择文件并执行进一步操作的案例选项中填充它们。 我用它来写文件所需的文件名:

dir=/root/vaibhav/install_package
> choices
for entry in "$search_dir"$dir/*.zip
do
  echo "$entry" | cut -d "/" -f5 >> choices
done

选择文件的输出是这样的:

content_abc.zip
content_xyz_test.zip
content_aacd_to_qa.zip

现在我希望脚本读取此文件并将其转换为用户可以执行进一步操作的int选项。 这就是我想要的:

case "<read_thefile"
1)<firstLine_from_file>
    Do some actions
;;
2)<secondline_fromfile>
    do some actions
;;
esac 

帮助我。

1 个答案:

答案 0 :(得分:0)

基本上你可以在你的脚本中做两件事:

  1. 从模板生成case(或select)个开关,将其写入文件,然后获取该文件。这可能有效,但如果输入文件(拉链列表)不可靠,我不推荐它。
  2. 使用nl list_of_zips显示列表,然后read来自用户的输入,并根据该数字,您可以从list_of_zips中选择一行,例如:< / p>

    nl list_of_zips
    # 1 OUTPUT_LINE1
    # 2 OUTPUT_LINE2
    ### now read the choice
    read choice
    ### and get the choice line from the file
    zip_file_choosen=$(awk "NR==$choice {print ; exit }")
    ### and do what you want with $zip_file_choosen ...