shell中的select用法

select也是循环的一种,它比较适合用在用户选择的情况下。
比如,我们有一个这样的需求,运行脚本后,让用户去选择数字,选择1,会运行w命令,选择2运行top命令,选择3运行free命令,选择4退出。脚本这样实现:

  1. #!/bin/bash
  2. echo "Please chose a number, 1: run w, 2: run top, 3: run free, 4: quit"
  3. echo
  4. select command in w top free quit
  5. do
  6. case $command in
  7. w)
  8. w
  9. ;;
  10. top)
  11. top
  12. ;;
  13. free)
  14. free
  15. ;;
  16. quit)
  17. exit
  18. ;;
  19. *)
  20. echo "Please input a number:(1-4)."
  21. ;;
  22. esac
  23. done

执行结果如下:
sh
select.sh
Please chose a number, 1: run w, 2: run top, 3: run free, 4:
quit

1) w
2) top
3) free
4) quit
#? 1
16:03:40 up 32
days,  2:42,  1 user,  load average: 0.01, 0.08, 0.08
USER     TTY      FROM  
           [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    61.135.172.68  
 15:33    0.00s  0.02s  0.00s sh select.sh

#? 3
            total  
    used       free     shared    buffers     cached
Mem:       1020328  
  943736      76592          0      86840     263624
-/+ buffers/cache:  
  593272     427056
Swap:      2097144      44196    
2052948
#?

我们发现,select会默认把序号对应的命令列出来,每次输入一个数字,则会执行相应的命令,命令执行完后并不会退出脚本。它还会继续让我们再次输如序号。序号前面的提示符,我们也是可以修改的,利用变量PS3即可,再次修改脚本如下:

  1. #!/bin/bash

  2. PS3="Please select a number: "
  3. echo "Please chose a number, 1: run w, 2: run top, 3: run free, 4: quit"
  4. echo
  5. select command in w top free quit
  6. do
  7. case $command in
  8. w)
  9. w
  10. ;;
  11. top)
  12. top
  13. ;;
  14. free)
  15. free
  16. ;;
  17. quit)
  18. exit
  19. ;;
  20. *)
  21. echo "Please input a number:(1-4)."
  22. esac
  23. done

如果想要脚本每次输入一个序号后就自动退出,则需要再次更改脚本如下:

  1. #!/bin/bash

  2. PS3="Please select a number: "
  3. echo "Please chose a number, 1: run w, 2: run top, 3: run free, 4: quit"
  4. echo
  5. select command in w top free quit
  6. do
  7. case $command in
  8. w)
  9. w;exit
  10. ;;
  11. top)
  12. top;exit
  13. ;;
  14. free)
  15. free;exit
  16. ;;
  17. quit)
  18. exit
  19. ;;
  20. *)
  21. echo "Please input a number:(1-4).";exit
  22. esac
  23. done

shell中的select用法

时间: 2024-10-05 21:39:05

  shell中的select用法的相关文章

Bash shell 中,select 使用举例

Bash shell 中,select 使用举例 一 背景 在最近的运维工作中,写了很多脚本,在写这些脚本时发现了一些高效的用法,现将 select 的用法简单介绍一下. 二 使用举例 select 表达式是 bash 的一种扩展应用,擅长于交互式场合.用户可以从一组不同的值中进行选择.格式如下: select var in ... ; do ... done 2.1 单独使用 select #!/bin/bash Hostname=( 'host1' 'host2' 'host3' ) sel

(转)Shell中read的用法详解

Shell中read的用法详解 原文:http://blog.csdn.net/jerry_1126/article/details/77406500 read的常用用法如下: read -[pstnd] var1 var2 ... -p 提示语句-n 字符个数-s 屏蔽回显-t 等待时间-d 输入分界 [plain] view plain copy 01). read                           # 从标准输入读取一行并赋值给特定变量REPLY [email prote

shell 中引号的用法

shell中三种引号的用法 双引号 (" "):双引号中的字符,除了$,",`和\以外的所有字符都解释成字符本身. 1 [email protected]:~#echo "$PATH" 2 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 1 [email protected]:~#echo "`pwd`" 2 /root 1 [email protected]:~#

linux bash shell中for的用法and示例

关于linux bash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用法.文中任何错误希望大佬们一一指出,不胜感激. bash shell中提供了for命令,用于创建通过一系列值重复的循环,每次重复使用系列中的一个值执行一个定义的命令集. for语句的基本格式如下: for---in list do commands done 在参数list中提供一系列用于迭代(上一

shell 中seq的用法 echo -n用法

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 从1循环到100的两种方法(bash 其它的shell没试过)for x in `seq 1 100`;do echo $x;donefor x in {1..100};do echo $x;done echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 echo -e 处理特殊字符 若字符串中

shell 中 seq的用法总结

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 以指定增量从首数开始打印数字到尾数. -f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同 --help 显示此帮助信息并退出 --version 显示版本信息并退出 如果省略了首数或者增量,则默认其值为1,即使这样尾数仍

linux基础:shell中的正则表达式用法大全

在Linux系统中,正则表达式(RegularExpression)是通过一些特殊字符的排列,用以查找.替换.删除等操作的强大工具,对于每一个Linux用户,都是非常重要的.在现有的系统中,正则表达式也分为基础正则表达式(grep),扩展正则表达式(egrep).在正式了解正则表达式之前,先了解一些相关的字符概念,它们在正则表达式中都有特殊的含义与用法. 对于基础正则表达式grep而言,每个特殊字符分别有不同的匹配: 1.字符匹配: .     :匹配任意单个字符       [ ]    :匹

Shell中eval的用法示例

功能说明:告知shell取出eval的参数,重新运算求出参数的内容. 语 法:eval [参数]补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参数不限数目,彼此之间用分号分开.1.执行命令行之前扫描它两次,再次运算求出参数的内容. 复制代码 代码如下: [[email protected] blue]# a="ls |more" [[email protected] blue]# $a                                   

shell中字符串基本用法

前言 今天在写脚本时,发现前阶段使用过的一些用法还是需要去百度查找,并且找到的答案还需要自己去筛选,耽误写脚本时间,这一篇对字符串之间的比较和逻辑判断都非常详细,借鉴他人之作,资源共享. 本片主要说明一些字符串比较中的注意事项 主要包括了字符串 相等.不等.长度.空字符串 以及逻辑与.逻辑或的内容,具体内容见下面的脚本: [plain] view plain copy #!/bin/bash # test string order a="ss" b="abc" c=