【實驗目的】?
? 通過本實驗練習,使學生了解常用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/445261.html
標籤:Linux
