【實驗目的】
通過本實驗練習,使學生了解常用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: 退出系統
請輸入您的選擇:
【實驗目的】
通過本實驗練習,使學生了解常用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