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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM