linux学习之shell脚本

大标 2022年3月16日18:30:23
评论
70

【实验目的】‍

‌    通过本实验练习,使学生了解常用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、运行脚本,测试每一个菜单功能

#!/bin/bash
user=$(whoami)
host=$(hostname)
date=$(date +%Y年%m月%d日)

echo -e \"\\033[33mUSER:$user HOST:$host DATE:$date\\033[0m\"

cd /tmp
echo -e \"\\033[32m菜单如下:
A: 创建子目录并复制文件(在/tmp下创建子目录t,并将/proc/cpuinfo文件拷贝进去)
B: 文件权限测试(测试对/proc/cpuinfo是否有r、w、x的权限,分别输出测试结果)
C: 文件字符转换(将/proc/cpuinfo文件中的小写字符转换为大写并输出)
D: 子目录总数统计(统计自己主目录下字目录的数量并输出)
E: 文本文件行数统计(统计/proc/cpuinfo文件中空行的行数并输出)
Q: 退出系统\\033[0m\"
while true
do
        read -p \"请输入您的选择:\" choice
        case $choice in
                A|a)
                        echo -e \"\\033[34m在/tmp创建子目录t\\033[0m\"
                        mkdir /tmp/t
                        echo -e \"\\033[34m将/proc/cpuinfo文件拷贝到t目录下\\033[0m\"
                        cp /proc/cpuinfo /tmp/t
                        tree /tmp/t
                        ;;
                B|b)
                        echo -e \"\\033[34m测试cpuinfo文件有哪些权限\\033[0m\"                                    
                        if [ -r /tmp/t/cpuinfo ]
                        then
                                echo -e \"\\033[34m有读权限\\033[0m\"
                        else
                                echo -e \"\\033[31m没有读的权限\\033[0m\"
                        fi
                        if [ -w /tmp/t/cpuinfo ]
                        then
                                echo -e \"\\033[34m有写权限\\033[0m\"
                        else
                                echo -e \"\\033[31m没有写的权限\\033[0m\"
                        fi
                        if [ -x /tmp/t/cpuinfo ]
                        then
                                echo -e \"\\033[34m有执行权限\\033[0m\"
                        else
                                echo -e \"\\033[31m没有执行的权限\\033[0m\"
                        fi
                        ;;
                C|c)
                        echo -e \"\\033[34m将cpuinfo文件中的小写字符转换成大写字符并输出\"
                        test -e /tmp/t/cpuinfo && cat /tmp/t/cpuinfo |tr [:lower:] [:upper:] && echo -e \"\\033[0m\"||echo -e \"\\033[31mcpuinfo文件不存在\\033[0m\"
                        ;;
                D|d)
                        sum=$(ls -l $(pwd) |grep ^d |wc -l)
                        echo -e \"\\033[34m主目录$(pwd)下的目录有$sum个\\033[0m\"
                        ;;
                E|e)
                        var=$(grep \'^$\' /tmp/t/cpuinfo |wc -l)
                        echo -e \"\\033[34mcpuinfo文件的空行有$var个\\033[0m\"
                        ;;
                Q|q)
                        echo -e \"\\033[34m删除r目录并退出\\033[0m\"
                        #rm -rf t#结束循环后自动删除
                        break
                        ;;
                *)
                        echo -e \"\\033[31m输入错误,请重新输入 或者 输入q退出\\033[0m\"
                        ;;
                esac
done
rm -rf t

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
大标
  • 本文由 发表于 2022年3月16日18:30:23
  • 转载请务必保留本文链接:https://www.tanhuibiao.com/script/fuwuqi/5024.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: