自用压缩解压缩工具测试加强版 本文共有35312个字,关键词: ``` #!/bin/bash #Version:1.3.7 #Author:stone #Discription:compress & uncompress DIR|FILE #反思:经过解压缩模块的编码,在解压缩模块上可以反向借鉴,可以先获取用户输入的想要保存的文件名,从中过滤关键字进行判断 #######用户想要以何种方式压缩,如果用户没有键入后缀,那么以默认方式压缩,或者根据用户的要求直接当做文件名, #######也可在获取用户输入时设定规则,符合规则才进行下一步操作,此处使用正则去匹配用户输入。 #######解压缩模块过滤出来后,解压缩之前应当再次对文件类型进行判断,有压缩文件的后缀但不是压缩文件的不进行解压缩操作。 function cc() #cc(continue compress 继续压缩模块) { clear #清屏操作 echo -e "\033[32;1m压缩完成,请到$dirname下查看.\033[0m" #此处为打印字符提示 echo -e "\033[31m########################\033[0m" echo -e "\033[31m###\033[32;1m压缩已完成,请选择\033[0m\033[31m###\033[0m" echo -e "\033[31m###\033[32;1mh|H---回到首页----\033[0m\033[31m###\033[0m" echo -e "\033[31m###\033[32;1mq|Q------退出-----\033[0m\033[31m###\033[0m" echo -e "\033[31m###\033[32;1m---回车默认退出---\033[0m\033[31m###\033[0m" echo -e "\033[31m########################\033[0m" echo -n -e "\033[33m请输入选项\033[0m" read chose2 #变量用于case语句的选择 if [ -n "$chose2" ]; then case $chose2 in h|H) continue 5 ;; q|Q) echo -e "\033[32;1m 你选择了退出\033[0m" echo -e "\033[32;1m脚本BUG时联系方式:吼\033[0m" exit 0 ;; *) echo -e "\033[32;1m由于你手指定位不准确,退出了脚本。\033[0m" echo -e "\033[32;1m脚本BUG时联系方式:吼\033[0m" exit 0 ;; esac else echo -e "\033[32;1m你选择了默认退出\033[0m" echo -e "\033[32;1m脚本BUG时联系方式:吼\033[0m" exit 0 fi } #输出的提示信息 clear #清屏操作 while :; do echo -e "\033[31m########################\033[0m" #此处为打印字符提示 echo -e "\033[31m###\033[32;1m 目标选择 \033[0m\033[31m###\033[0m" echo -e "\033[31m###\033[32;1mc|C 压缩文件或目录\033[0m\033[31m###\033[0m" echo -e "\033[31m###\033[32;1mu|U 解压缩指定文件\033[0m\033[31m###\033[0m" echo -e "\033[31m###\033[32;1mq|Q 退出不执行脚本\033[0m\033[31m###\033[0m" echo -e "\033[31m########################\033[0m" echo -n -e "\033[33m请选择操作:\033[0m" read alpha1 #此处为首页case语句的变量 while :; do if [ "$alpha1" == "" ]; then #判断用户输入是否为空 echo -e "\033[31;1m输入不能为空,请重新输入\033[0m" continue 2 elif [ "$alpha1" == "c" -o "$alpha1" == "C" ]; then #判断用户输入 echo -e "\033[31m##################################\033[0m" echo -e "\033[31m######\033[32;1m----你选择了压缩功能--\033[0m\033[31m######\033[0m" echo -e "\033[31m######\033[32;1m--请指定文件存放目录--\033[0m\033[31m######\033[0m" echo -e "\033[31m##################################\033[0m" echo -n -e "\033[33m请输入需压缩文件或目录:\033[0m" read dir #获取目录变量,后期引用 elif [ "$alpha1" == "u" -o "$alpha1" == "U" ]; then #判断用户输入 con=0 #用户控制循环中该信息的再次显示 echo -e "\033[31m##################################\033[0m" echo -e "\033[31m######\033[32;1m--你选择了解压缩功能--\033[0m\033[31m######\033[0m" echo -e "\033[31m######\033[32;1m--请指定文件存放目录--\033[0m\033[31m######\033[0m" echo -e "\033[31m##################################\033[0m" echo -n -e "\033[33m请输入需解压缩文件的绝对路径:\033[0m" read dir #获取压缩文件存放地址 elif [ "$alpha1" == "q" -o "$alpha1" == "Q" ]; then echo -e "\033[32;1m你选择了退出脚本,谢谢支持。\033[0m" echo -e "\033[33;1mBUG的联系方式:吼。\033[0m" exit 0 else echo -e "\033[31;1m请输入正确的选项。\033[0m" continue fi while :; do case $alpha1 in c|C) #压缩选项语句 if [ -n "$dir" ]; then #判断用户输入的目录是否为空 if [ -d $dir -o -f $dir ]; then #判断用户输入的是不是存在的文件或者目录 echo -e "\033[31m########################\033[0m" #打印提示界面 echo -e "\033[31m######\033[32;1m 格式选择 \033[0m\033[31m######\033[0m" echo -e "\033[31m######\033[32;1mj bzip2 压缩\033[0m\033[31m######\033[0m" echo -e "\033[31m######\033[32;1mJ xz 压缩\033[0m\033[31m######\033[0m" echo -e "\033[31m######\033[32;1mz gzip 压缩\033[0m\033[31m######\033[0m" echo -e "\033[31m#####\033[32;1mb|B 返回上一层\033[0m\033[31m#####\033[0m" echo -e "\033[31m########################\033[0m" echo -n -e "\033[33m请输入选择的压缩格式:\033[0m" read format1 #从键盘获取用户指定的压缩格式 case $format1 in #通过指定的格式进行下一步操作 j) dirname='/tmp' #设定默认压缩文件存放的路径/tmp filename=$(basename $dir) #取输入路径的基名,作为默认的文件名 clear #清屏操作 while :; do #以下为bzip2格式的压缩流程 echo -e "\033[31m###################################################\033[0m" echo -e "\033[31m#################\033[32;1m你选择了bzip2压缩\033[0m\033[31m#################\033[0m" echo -e "\033[31m###############\033[32;1my|Y-----默认bzip2压缩\033[0m\033[31m###############\033[0m" echo -e "\033[31m########\033[32;1mn|N文件名指定,不指定则默认原文件名\033[0m\033[31m########\033[0m" echo -e "\033[31m######\033[32;1md|D--存放路径指定,不指定则默认指向/tmp/\033[0m\033[31m######\033[0m" echo -e "\033[31m#################\033[32;1mb|B----返回上一层\033[0m\033[31m#################\033[0m" echo -e "\033[31m###################################################\033[0m" echo -n -e "\033[33m请输入选择:\033[0m" read chose1 #该变量用于case语句的选项 while :; do case $chose1 in "") #输入为空时的处理办法 echo -e "\033[31;1m输入不能为空,请重新输入\033[0m" continue 2 ;; y|Y) #以默认选项或者指定好的选项进行压缩 cd $dirname #进入默认或者指定好的压缩目录 tar -jcvf ${filename}.tar.bz2 $dir &>/dev/null #以指定的方式进行压缩 if [ "$?" == "0" ]; then cc #调用函数模块 else echo -e "\033[31;1;5m很抱歉,由于未知原因,压缩未完成!\033[0m" exit 1 fi ;; n|N) #对压缩后的文件进行重命名 echo -n -e "\033[33m请输入文件名:\033[0m" read filename1 #从键盘获取用户指定的用户名 if [ -n "filename" ]; then #判断用户输入是否为空 filename2=$(echo $filename1 |sed -r 's/^[[:alpha:]](_?[[:alnum:]]_?)*//g') #将用户输入的信息进行过滤,并用于判断命名是否合理 if [ -z "$filename2" ]; then filename=$filename1 #当命名合理后,将用户键入的值赋值给filename,用于文件的命名。 echo -e "\033[32;1m你指定的名称为\033[33;1m$filename\033[32;1m,请选择压缩或者指定目录.\033[0m" #输出的提示信息 continue 2 #带变量值返回上一层 else echo -e "\033[31;1m请输入数字、字母下划线组成的文件名,且不能以数字下划线开头\033[0m" chose1=n #用户输入的值不合理时返回本case语句,重新输入 continue fi else echo -e "\033[31;1m文件名不能为空,请重新输入!\033[0m" chose1=n #用户键入空时返回本case语句,重新进行输入 continue fi ;; d|D) #压缩后文件存放目录的指定 echo -n -e "\033[33m请输入压缩包保存绝对路径:\033[0m" read dir1 #从键盘获取用户输入的值 if [ -n "$dir1" ]; then #判断用户是否键入空值 if [ -d $dir1 ]; then #判断用户键入的目录是否存在 dirname=$dir1 #如果目录存在则将用户键入的值赋值给dirname echo -e "\033[32;1m你指定的目录为\033[33;1m$dirname\033[32;1m,请选择压缩或者指定名称.\033[0m" #输出的信息提示 continue 2 #带变量值返回上一层 else echo -e "\033[31;1m你输入的目录不存在,请重新指定!\033[0m" chose1=d #当用户键入的目录不存在时返回本case语句重新输入 continue fi else echo -e "\033[31;1m目录不能为空,请重新指定!\033[0m" chose1=d #当用户键入空值的时候返回本层,重新进行目录的指定 continue fi ;; b|B) #返回上一级字符提示界面 continue 3 ;; *) echo -e "\033[31你的选择不符合要求,请重新选择\033[0m" continue 2 ;; esac done done ;; J) dirname='/tmp' #设定默认压缩文件存放的路径/tmp filename=$(basename $dir) #取输入路径的基名,作为默认的文件名 clear #清屏操作 while :; do #以下为字符提示界面 echo -e "\033[31m###################################################\033[0m" echo -e "\033[31m#################\033[32;1m你选择了--xz-压缩\033[0m\033[31m#################\033[0m" echo -e "\033[31m###############\033[32;1my|Y 确认使用--xz-压缩\033[0m\033[31m###############\033[0m" echo -e "\033[31m########\033[32;1mn|N文件名指定,不指定则默认原文件名\033[0m\033[31m########\033[0m" echo -e "\033[31m######\033[32;1md|D--存放路径指定,不指定则默认指向/tmp/\033[0m\033[31m######\033[0m" echo -e "\033[31m#################\033[32;1mb|B----返回上一层\033[0m\033[31m#################\033[0m" echo -e "\033[31m###################################################\033[0m" echo -n -e "\033[33m请输入选择:\033[0m" read chose1 #case语句选项变量 while :; do case $chose1 in "") #用户键入空值时的处理办法 echo -e "\033[31;1m输入不能为空,请重新输入\033[0m" continue 2 ;; y|Y) #以用户指定的方式或默认的方式压缩 cd $dirname #切换到用户指定目录或者默认目录/tmp tar -Jcvf ${filename}.tar.xz $dir &>/dev/null #以指定的方式进行压缩 if [ "$?" == "0" ]; then #判断压缩是否成功 cc #调用函数模块 else echo -e "\033[31;1;5m很抱歉,由于未知原因,压缩未完成!\033[0m" exit 1 fi ;; n|N) #压缩文件的文件名指定 echo -n -e "\033[33m请输入文件名:\033[0m" read filename1 #从键盘获取用户键入文件名 if [ -n "$filename1" ]; then #判断用户是否键入了空值 filename2=$(echo $filename1 |sed -r 's/^[[:alpha:]](_?[[:alnum:]]_?)*//g') #对用户键入的非空值进行过滤 if [ -z "$filename2" ]; then #判断过滤是否成功 filename=$filename1 #成功则将用户键入的数据赋值给filename,用户文件名的指定 echo -e "\033[32;1m你指定的名称为\033[33;1m$filename\033[32;1m,请选择压缩或者指定目录.\033[0m" #打印提示 continue 2 else echo -e "\033[31;1m请输入数字、字母下划线组成的文件名,且不能以数字下划线开头\033[0m" #打印错误提示 chose1=n #给定本case语句的值,本返回重新指定名称 continue fi else echo -e "\033[31;1m文件名不能为空,请重新输入!\033[0m" chose1=n #用户键入空值时的解决办法 continue fi ;; d|D) #压缩文件存放目录的指定 echo -n -e "\033[33m请输入压缩包保存绝对路径:\033[0m" read dir1 #从键盘获取用户指定的路径 if [ -n "$dir1" ]; then #判断用户键入的值是否为空 if [ -d $dir1 ]; then #判断用户键入的目录是否存在 dirname=$dir1 #当用户键入的目录存时赋值给dirname,用于存放目录的指定 echo -e "\033[32;1m你指定的目录为\033[33;1m$dirname\033[32;1m,请选择压缩或者指定名称.\033[0m" #提示打印 continue 2 #带参数返回上一层 else echo -e "\033[31;1m你输入的目录不存在,请重新指定!\033[0m" chose1=d #目录不存在时的解决办法 continue fi else echo -e "\033[31;1m目录不能为空,请重新指定!\033[0m" chose1=d #用户输入为空值的解决办法 continue fi ;; b|B) #返回上一级字符提示界面 continue 3 ;; *) #用户键入其他无效选项的处理办法 echo -e "\033[31你的选择不符合要求,请重新选择\033[0m" continue 2 #返回上一层 ;; esac done done ;; z) #用户指定的压缩选项-gzip dirname='/tmp' #设定默认压缩文件存放的路径/tmp filename=$(basename $dir) #取输入路径的基名,作为默认的文件名 clear #清屏操作 while :; do #以下为用户指定方式压缩的流程 echo -e "\033[31m###################################################\033[0m" echo -e "\033[31m#################\033[32;1m你选择了 gzip压缩\033[0m\033[31m#################\033[0m" echo -e "\033[31m###############\033[32;1my|Y 确认使用 gzip压缩\033[0m\033[31m###############\033[0m" echo -e "\033[31m########\033[32;1mn|N文件名指定,不指定则默认原文件名\033[0m\033[31m########\033[0m" echo -e "\033[31m######\033[32;1md|D--存放路径指定,不指定则默认指向/tmp/\033[0m\033[31m######\033[0m" echo -e "\033[31m#################\033[32;1mb|B----返回上一层\033[0m\033[31m#################\033[0m" echo -e "\033[31m###################################################\033[0m" echo -n -e "\033[33m请输入选择:\033[0m" read chose1 #从键盘获取用户的选项 while :; do case $chose1 in "") #用户键入为空值的处理办法 echo -e "\033[31;1m输入不能为空,请重新输入\033[0m" continue 2 #返回上一层 ;; y|Y) #以用户指定的方式或者默认方式执行 cd $dirname #切换到用户指定的目录下或者默认目录/tmp下 tar -zcvf ${filename}.tar.gz $dir &>/dev/null #以用户指定的方式进行压缩 if [ "$?" == "0" ]; then cc #调用函数模块 else echo -e "\033[31;1;5m很抱歉,由于未知原因,压缩未完成!\033[0m" exit 1 #执行不成功的处理办法 fi ;; n|N) #压缩文件名称的指定 echo -n -e "\033[33m请输入文件名:\033[0m" read filename1 #从键盘获取用户输入的名称 if [ -n "$filename1" ]; then #判断用户键入的是否为空值 filename2=$(echo $filename1 |sed -r 's/^[[:alpha:]](_?[[:alnum:]]_?)*//g') #对用户键入的值进行过滤操作 if [ -z "$filename2" ]; then #判断用户的输入是否合理 filename=$filename1 #合理时给变量赋值 echo -e "\033[32;1m你指定的名称为\033[33;1m$filename\033[32;1m,请选择压缩或者指定目录.\033[0m" #提示信息打印 continue 2 #带参数返回上一层级 else echo -e "\033[31;1m请输入数字、字母下划线组成的文件名,且不能以数字下划线开头\033[0m" chose1=n #用户输入不合理时的处理办法 continue #返回当前case语句继续输入 fi else echo -e "\033[31;1文件名不能为空,请重新指定\033[0m" chose1=n #用户键入为空的处理办法 continue #返回当前case语句继续输入 fi ;; d|D) #压缩包存放目录的指定 echo -n -e "\033[33m请输入压缩包保存绝对路径:\033[0m" read dir1 #从键盘获取用户的输入 if [ ! -z "$dir1" ]; then #判断用户的输入是否为空 if [ -d $dir1 ]; then #判断用户非空输入的目录是否存在 dirname=$dir1 #目录存在将用户输入赋值给dirname,用于压缩包目录的指定 echo -e "\033[32;1m你指定的目录为\033[33;1m$dirname\033[32;1m,请选择压缩或者指定名称.\033[0m" #提示信息打印 continue 2 #带参数返回上一层 else echo -e "\033[31;1m你输入的目录不存在,请重新指定!\033[0m" chose1=d #用户输入目录不存在时的处理办法 continue fi else echo -e "\033[31;1m目录不能为空,请重新指定!\033[0m" chose1=d #用户键入空值时的处理办法 continue fi ;; b|B) #返回上一级字符提示界面 continue 3 ;; *) #当用户键入其他无效选项时的处理办法 echo -e "\033[31你的选择不符合要求,请重新选择\033[0m" continue 2 ;; esac done done ;; b|B) #返回上一个字符提示界面 continue 2 ;; *) #用户键入其他无效选项时的处理办法 echo -e "\033[31;1m你输入的不是有效选项,请重新选择!\033[0m" continue ;; esac else echo -e "\033[31m你输入的文件或目录无效,请重新选择!\033[0m" alpha1=c #用户无效输入时的处理办法 continue 2 #返回上一层,重新进行选择 fi else echo -e "\033[31;1m输入不能为空,请重新选择!\033[0m" continue 2 #用户键入空值的处理办法 fi #返回上一层,重新进行选择 ;; u|U) #解压缩case分支语句 [ "$con" == "1" ] && clear #清屏操作,当变量con在循环内赋值后打开该段字符显示并从键盘获取用户输入 [ "$con" == "1" ] && echo -e "\033[31m##################################\033[0m" [ "$con" == "1" ] && echo -e "\033[31m######\033[32;1m--你选择了解压缩功能--\033[0m\033[31m######\033[0m" [ "$con" == "1" ] && echo -e "\033[31m######\033[32;1m--请指定文件存放目录--\033[0m\033[31m######\033[0m" [ "$con" == "1" ] && echo -e "\033[31m##################################\033[0m" [ "$con" == "1" ] && echo -n -e "\033[33m请输入需解压缩文件的绝对路径:\033[0m" [ "$con" == "1" ] && read dir #获取压缩文件存放地址 while :; do if [ ! -z "$dir" ]; then #判断用户键入是否为空值 if [ -d $dir ]; then #判断用户键入的目录是否存在 cd $dir tar1=($(ls -A |grep -E "(.*\..?t(gz|ar))|(.*(\.tar)?\.(gz|xz|bz2|zip))")) #匹配目录中存在的压缩包 if [ "${tar1[0]}" == "" ]; then #当目录下没有压缩包的处理办法,此处应当加选项,重新输入还是返回。 echo -e "\033[31;1m很抱歉,该目录下并没有能够识别的压缩文件!两秒后返回首页。\033[0m" sleep 2 continue 4 fi a=1 #用于每一行显示压缩包个数定义、用户输入时数值的限定。 for i in ${tar1[*]}; do #将获取到的压缩包显示到屏幕,供用户选择 echo -n -e "\033[31;1m$a-$i\033[0m " #打印编号后的压缩包名 d=$(($a%4)) #每一行定义四个 [ "$d" == "0" ] && echo "" #每一行满4个参数则换行 let a++ #每执行一次累加一次,用于压缩包个数的判断,也用于分行显示的限定 done echo "" #当压缩包显示结束后强制换行,避免长度不够时提示符紧靠参数 while :; do echo -e "\033[33m请输入需要解压缩包的序号(使用空格或单个特殊字符或单个字母隔开):\033[0m" read num1 #从键盘获取用户指定压缩包的序号 if [ ! -z "$num1" ]; then #判断用户是否键入了空值 num2=$(echo $num1 |sed -r "s/([[:space:]]|[[:alpha:]]|[[:punct:]])?(([0-9]{1,})([[:space:]]|[[:alpha:]]|[[:punct:]])?){1,}//g") #判断用户输入的数据是否有效 if [ -z "$num2" ]; then #判断用户的输入是否符合定义的标准 #需添加的功能:提取用户输入的数值 并进行判断大小,已经解压的不解压,即数字不能重复 num3=$(echo $num1 |awk -F "([[:space:]]|[[:alpha:]]|[[:punct:]])" '{printf NF}') #统计用户输入参数的个数 num4=1 #用于awk语句打印计数 for ((i=0;$i<$num3;i++)); do #循环将用户选择的数值放入数组中 num[$i]=$(echo $num1 |awk -F "([[:space:]]|[[:alpha:]]|[[:punct:]])" "{printf \$$num4}") #将用户输入的数字放入数组,打印时使用了变量嵌套 let num4++ #用于awk语句打印计数 done while :; do echo -e "\033[31;1m默认解压缩至/tmp目录\033[0m" echo -n -e "\033[33m请输入解压缩指定目录:\033[0m" read DIR #从键盘获取用户指定压缩文件解压后的存放目录 if [ ! -z "$DIR" ]; then #判断用户的键入是否每空值 if [ -d $DIR ]; then #判断用户输入的目录是否存在 echo -e "\033[32;1m你选择了\033[33m$DIR\033[32m作为解压缩目录!\033[0m" #提示打印 break #如果目录存在则跳出循环 else echo -e "\033[31;1m输入的路径不存在,请重新输入!\033[0m" continue #用户键入的目录不存在时,提示重新录入 fi else DIR='/tmp' #默认解压后存放路径为/tmp echo -e "\033[31;1m默认为/tmp目录。\033[0m" break #设定结束后退出循环 fi done for i in ${num[*]}; do #将用户数组的值与压缩文件数组的值关联起来 truenum=$(($i-1)) #用户输入的数比数组大1,因此每一个值减一 if [ $truenum -lt $a ]; then #比较用户的输入是否超过了过滤出的压缩文件数量 value1="tar1[$truenum]" #数组变量的嵌套 eval value=$(echo \${$value1}) #数组变量的嵌套 #应该先判断文件压缩类型 directory=$(echo $dir |sed -r "s/(.*)\/$/\1/g") #保证dir目录的一致性,用于压缩包绝对路径的指定 filename=$(echo "$value" |awk -F "(gz|xz|bz2|zip)" '{print $1}') #指定单一压缩文件保留原文件时,标准输出重定向时的文件名。 DIR=$(echo "$DIR" |sed -r "s/(.*)\/?$/\1\//g") #给目录加上/,固定目录的格式 tar2=$(echo $value |grep "tar") #过滤有tar关键字的文件 tar3=$(echo $value |grep ".gz") tar4=$(echo $value |grep ".xz") tar5=$(echo $value |grep ".bz2") tar6=$(echo $value |grep ".zip") if [ -n "tar2" ] ; then #过滤文件名中有tar关键字的包 tar -xf $directory/$value -C $DIR &>/dev/null #默认解压缩到/tmp目录下 if [ "$?" == "0" ]; then #判断解压缩是否成功 echo -e "\033[32;1m $value 解压缩成功.\033[0m" else echo -e "\033[31;1m非常抱歉,由于未知的原因,\033[33m$value\033[31解压缩未能顺利进行!\033[0m" fi elif [ -n "$tar3" ]; then #过滤文件名中有.gz的压缩包 gunzip $directory/$value -c >${DIR}${filename} &>/dev/null #gz压缩包的操作 if [ "$?" == "0" ]; then #判断解压缩是否成功 echo -e "\033[32;1m $value 解压缩成功.\033[0m" else echo -e "\033[31;1m非常抱歉,由于未知的原因,\033[33m$value\033[31解压缩未能顺利进行!\033[0m" fi elif [ -n "$tar4" ]; then #过滤文件名中有.xz的压缩包 unxz $directory/$value -c >${DIR}${filename} &>/dev/null #xz压缩包操作 if [ "$?" == "0" ]; then #判断解压缩是否成功 echo -e "\033[32;1m $value 解压缩成功.\033[0m" else echo -e "\033[31;1m非常抱歉,由于未知的原因,\033[33m$value\033[31解压缩未能顺利进行!\033[0m" fi elif [ -n "$tar5" ]; then #bzip2压缩包的解决办法 bunzip2 $directory/$value -c >${DIR}${filename} &>/dev/null if [ "$?" == "0" ]; then #判断解压缩是否成功 echo -e "\033[32;1m $value 解压缩成功.\033[0m" else echo -e "\033[31;1m非常抱歉,由于未知的原因,\033[33m$value\033[31解压缩未能顺利进行!\033[0m" fi elif [ -n "$tar6" ]; then #bzip2压缩包的解决办法 cd $directory/$value unzip $directory/$value &>/dev/null if [ "$?" == "0" ]; then #判断解压缩是否成功 echo -e "\033[32;1m $value 解压缩成功.\033[0m" else echo -e "\033[31;1m非常抱歉,由于未知的原因,\033[33m$value\033[31解压缩未能顺利进行!\033[0m" fi else #未识别压缩包的解决办法 echo -e "\033[32;1m很抱歉这个压缩包的类型没有添加。\033[0m" fi else echo -e "\033[31;1m你指定的解压序号\033[33m$i\033[31m不存在,没有进行解压缩。\033[0m" fi done sleep 2 #等待两秒 continue 5 #解压缩完成后返回第一个字符界面 else echo -e "\033[31;1m未能按照规定输入,请重新输入!\033[0m" continue fi else echo -e "\033[31;1m压缩包选择不能为空,请重新输入!\033[0m" continue fi done else echo -e "\033[31;1m输入不是有效目录,请重新输入!\033[0m" alpha1=u continue fi else con=1 #控制循环后字符的显示,以及从键盘获取用户键入信息 alpha1=u #给定本case语句的值,返回重新指定名称 echo -e "\033[31;1m输入不能为空,请重新输入!\033[0m" continue 2 fi done ;; *) echo -e "\033[31;1m你的输入不符合要求,请再次输入!\033[0m" continue ;; esac done done done ``` 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 shell脚本 2017-07-03 评论 2370 次浏览