select类似于菜单

67 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情 介绍 select函数是IO多路复用的函数,它主要的功能是用来等文件描述符中的事件是否就绪,select可以使我们在同时等待多个文件缓冲区 ,减少IO等待的时间,能够提高进程的IO效率。 select()函数允许程序监视多个文件描述符,等待所监视的一个或者多个文件描述符变为“准备好”的状态。所谓的”准备好“状态是指:文件描述符不再是阻塞状态,可以用于某类IO操作了,包括可读,可写,发生异常三种

实战

#!/bin/bash
select similar in disk_user free_user process quit
do
        case "$similar" in
                disk_user)
                        df -h
                        ;;
                free_user)
                        free -m
                        ;;
                process)
                        ps -ef
                        ;;
                quit)
                        break
                        ;;
                *)
                        echo "error"
        esac
done

[root@192.168.146.101~]# sh similar-menu.sh
1) disk_user
2) free_user
3) process
4) quit
#? 2
              total        used        free      shared  buff/cache   available
Mem:            972         666          80          19         225         146
Swap:          2047         242        1805
#? 1
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 470M     0  470M    0% /dev
tmpfs                    487M     0  487M    0% /dev/shm
tmpfs                    487M  8.7M  478M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  7.2G  9.9G   42% /
/dev/sda1               1014M  171M  844M   17% /boot
tmpfs                     98M  4.0K   98M    1% /run/user/42
tmpfs                     98M   28K   98M    1% /run/user/0
/dev/sr0                 4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64
#? 5
error
#? 4

修改前面的提示

添加这一行PS3="Welcome to my world:"


[root@192.168.146.101~]# sh similar-menu.sh
1) disk_user
2) free_user
3) process
4) quit
Welcome to my world:1
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 470M     0  470M    0% /dev
tmpfs                    487M     0  487M    0% /dev/shm
tmpfs                    487M  8.7M  478M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  7.2G  9.9G   42% /
/dev/sda1               1014M  171M  844M   17% /boot
tmpfs                     98M  4.0K   98M    1% /run/user/42
tmpfs                     98M   28K   98M    1% /run/user/0
/dev/sr0                 4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64
Welcome to my world:2
              total        used        free      shared  buff/cache   available
Mem:            972         668          76          19         227         144
Swap:          2047         242        1805
Welcome to my world:4