linux学习之shell脚本

【实验目的】‍

‌    通过本实验练习,使学生了解常用SHELL的编程特点,掌握SHELL 程序设计的基础知识。对SHELL程序流程控制、SHELL程序的运行方式、bash程序的调试方法及bash的常用内部命令有进一步的认识和理解。

‌【实验内容】

‌    编写shell脚本,包含以下功能:

‌1、输出系统基本信息,系统运行时自动获取相关值并代替*:

‌USER:****  HOST:****  DATE:****年**月**日

‌2、创建以下菜单,并完成菜单相应功能:

‌A: 创建子目录并复制文件(在/tmp下创建子目录t,并将/proc/cpuinfo文件拷贝进去)

‌B: 文件权限测试(测试对/proc/cpuinfo是否有r、w、x的权限,分别输出测试结果)

‌C: 文件字符转换(将/proc/cpuinfo文件中的小写字符转换为大写并输出)

‌D: 子目录总数统计(统计自己主目录下字目录的数量并输出)

‌E: 文本文件行数统计(统计/proc/cpuinfo文件中空行的行数并输出)

‌Q: 退出系统

‌请输入您的选择:

1
( 10分 )

‌【实验目的】

‌    通过本实验练习,使学生了解常用SHELL的编程特点,掌握SHELL 程序设计的基础知识。对SHELL程序流程控制、SHELL程序的运行方式、bash程序的调试方法及bash的常用内部命令有进一步的认识和理解。

‌【实验内容】

‌    编写shell脚本,包含以下功能:

‌1、输出系统基本信息,系统运行时自动获取相关值并代替*:

‌USER:****  HOST:****  DATE:****年**月**日

‌2、创建以下菜单,并完成菜单相应功能:

‌A: 创建子目录并复制文件(在/tmp下创建子目录t,并将/proc/cpuinfo文件拷贝进去)

‌B: 文件权限测试(测试对/proc/cpuinfo是否有r、w、x的权限,分别输出测试结果)

‌C: 文件字符转换(将/proc/cpuinfo文件中的小写字符转换为大写并输出)

‌D: 子目录总数统计(统计自己主目录下字目录的数量并输出)

‌E: 文本文件行数统计(统计/proc/cpuinfo文件中空行的行数并输出)

‌Q: 退出系统

‌请输入您的选择:

‍‌3、运行脚本,测试每一个菜单功能

复制代码
 1 #!/bin/bash
 2 user=$(whoami)
 3 host=$(hostname)
 4 date=$(date +%Y年%m月%d日)
 5 
 6 echo -e "\033[33mUSER:$user HOST:$host DATE:$date\033[0m"
 7 
 8 cd /tmp
 9 echo -e "\033[32m菜单如下:
10 A: 创建子目录并复制文件(在/tmp下创建子目录t,并将/proc/cpuinfo文件拷贝进去)
11 B: 文件权限测试(测试对/proc/cpuinfo是否有r、w、x的权限,分别输出测试结果)
12 C: 文件字符转换(将/proc/cpuinfo文件中的小写字符转换为大写并输出)
13 D: 子目录总数统计(统计自己主目录下字目录的数量并输出)
14 E: 文本文件行数统计(统计/proc/cpuinfo文件中空行的行数并输出)
15 Q: 退出系统\033[0m"
16 while true
17 do
18         read -p "请输入您的选择:" choice
19         case $choice in
20                 A|a)
21                         echo -e "\033[34m在/tmp创建子目录t\033[0m"
22                         mkdir /tmp/t
23                         echo -e "\033[34m将/proc/cpuinfo文件拷贝到t目录下\033[0m"
24                         cp /proc/cpuinfo /tmp/t
25                         tree /tmp/t
26                         ;;
27                 B|b)
28                         echo -e "\033[34m测试cpuinfo文件有哪些权限\033[0m"                                    
29                         if [ -r /tmp/t/cpuinfo ]
30                         then
31                                 echo -e "\033[34m有读权限\033[0m"
32                         else
33                                 echo -e "\033[31m没有读的权限\033[0m"
34                         fi
35                         if [ -w /tmp/t/cpuinfo ]
36                         then
37                                 echo -e "\033[34m有写权限\033[0m"
38                         else
39                                 echo -e "\033[31m没有写的权限\033[0m"
40                         fi
41                         if [ -x /tmp/t/cpuinfo ]
42                         then
43                                 echo -e "\033[34m有执行权限\033[0m"
44                         else
45                                 echo -e "\033[31m没有执行的权限\033[0m"
46                         fi
47                         ;;
48                 C|c)
49                         echo -e "\033[34m将cpuinfo文件中的小写字符转换成大写字符并输出"
50                         test -e /tmp/t/cpuinfo && cat /tmp/t/cpuinfo |tr [:lower:] [:upper:] && echo -e "\033[0m"||echo -e "\033[31mcpuinfo文件不存在\033[0m"
51                         ;;
52                 D|d)
53                         sum=$(ls -l $(pwd) |grep ^d |wc -l)
54                         echo -e "\033[34m主目录$(pwd)下的目录有$sum个\033[0m"
55                         ;;
56                 E|e)
57                         var=$(grep '^$' /tmp/t/cpuinfo |wc -l)
58                         echo -e "\033[34mcpuinfo文件的空行有$var个\033[0m"
59                         ;;
60                 Q|q)
61                         echo -e "\033[34m删除r目录并退出\033[0m"
62                         #rm -rf t#结束循环后自动删除
63                         break
64                         ;;
65                 *)
66                         echo -e "\033[31m输入错误,请重新输入 或者 输入q退出\033[0m"
67                         ;;
68                 esac
69 done
70 rm -rf t
复制代码

 

posted @   霖霖的信箱  阅读(880)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示