實驗五 shell腳本編程


實驗五 shell腳本編程

項目 內容
這個作業屬於哪個課程 2020春季Linux系統與應用 (南昌航空大學 - 信息工程學院)
這個作業的要求在哪里 實驗五 shell腳本編程
學號-姓名 17041505-邱玉倩
作業學習目標 1.了解shell腳本的概念及使用
2.掌握shell腳本語言的基本語法
3.學習簡單的shell腳本編程

1.讓用戶輸入一個字符串,如果用戶輸入的是hello,請輸入hello 用戶姓名首字母縮寫,否則輸出請輸入hello
   #!/bin/bash
   read -p '請輸入一個字符串:' str #讀取字符串str
   if [ $str = "hello" ]
   then
   	echo "hello  qyq"
   else
   	echo "請輸入hello"
   fi

2.編寫一腳本,判斷輸入用戶名是否存在,輸出結果只能是存在該用戶或者不存在該用戶,不能有其他數據輸出。
   #!/bin/bash 
   
   read -p '請輸入用戶名:' user_name
   id $user_name &> /dev/null  #查詢用戶
   if [ $? -eq 0 ] 
   then
   	echo "存在用戶$user_name" 
   else
   	echo "不存在用戶$user_name" 
   fi

3.編寫腳本計算1-100之間的所有奇數和。
   #!/bin/bash 
   
   SUM=0 
   
   for i in {1..100..2} 
   do 
   	let SUM=$SUM+$i #求1-100中所有奇數之和
   done
   
   echo "1-100之間的所有奇數和為: $SUM"

4.編寫腳本,判斷鍵盤輸入整數是否為質數。
   #!/bin/bash
   
   read -p '請輸入一個正整數:' num
   [ $num -eq 1 ] && echo '$num是質數'&&exit #判斷輸入數是否為1
   [ $num -eq 2 ] && echo '$num是質數'&&exit #判斷輸入數是否為2
   for i in `seq 2 $[$num-1]` #i的范圍為(2,num-1)
   do
   	[ $[$num%i] -eq 0 ] && echo "$num不是質數"&&exit 
   done
   echo "$num是質數"&&exit

5.模擬一個多任務維護界面,當執行程序時先顯示總菜單,然后進行選擇后做相應的維護監控操作
#!/bin/bash
   cat <<-EOF
   	h	顯示命令幫助
   	f	顯示磁盤分區
   	d	顯示磁盤掛載
   	m	查看內存使用
   	u	查看系統負載
   	q	退出程序
   EOF
   while true
   do
   	read -p "請選擇需要操作的內容(help h):" action
   	case $action in
   		h)
   	cat <<-EOF
   				h	顯示命令幫助
   				f	顯示磁盤分區
   				d	顯示磁盤掛載
   				m	查看內存使用
   				u	查看系統負載
   				q	退出程序
   	EOF
   			;;                                                   
   		f)
   			lsblk
   			;;
   		d)
   			df -h
   			;;
   		m)
   			free -m
   			;;
   		u)
   			uptime
   			;;
   		q)
   			exit
   			;;
   	esac
   done

11

12

13

6.編寫腳本實現計算用戶輸入參數數字的和,分別用shiftfor循環實現。
   #!/bin/bash
   SUM=0
   while [ $# -ne 0 ]
   do
   	let SUM=$SUM+$1
   	shift
   done
   echo SUM=$SUM

15

   #!/bin/bash
   SUM=0
   for i
   do
   	let SUM=SUM+$i
   done
   echo SUM=$SUM

17

7.編寫腳本,生成一個phonenumber.txt文件,文件內容為隨機產生以139開頭的手機號1000個,每個手機號占一行。
   #!/bin/bash
   file=./phonenumber.txt
   for ((i=1;i<=1000;i++))
   do
   	n1=$[ $RANDOM%10]
   	n2=$[ $RANDOM%10]
   	n3=$[ $RANDOM%10]
   	n4=$[ $RANDOM%10]
   	n5=$[ $RANDOM%10]
   	n6=$[ $RANDOM%10]
   	n7=$[ $RANDOM%10]
   	n8=$[ $RANDOM%10]
   	echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> $file
   done

19

8.在第7題產生的1000個電話號碼中抽取5位幸運號碼,並顯示,要求只顯示前3三位數字和后4位數字,中間四位用*代替。
   #!/bin/bash
   phone=./phonenumber.txt
   for ((i=1;i<=5;i++))
   do
   	line=`wc -l $phone | cut -d' ' -f1`
   	luck_line=$[RANDOM%$line+1]
   	luck_number=`head -$luck_line $phone | tail -1`
   	echo "139****${luck_number:7:4}"
   	echo $luck_number >> luck.txt
   	sed -i "/$luck_number/d" $phone
   done

21

9.使用until語句批量創建10個用戶,要求stu1-stu5用戶的UID分別為2001-2005stu6-stu10用戶的家目錄分別在/rhome/stu6-/rhome/stu10
   #!/bin/bash
   if [ -d /rhome ]
   then
   	echo "/rhome目錄已存在"
   else
   	mkdir /rhome
   	echo "/rhome不存在,已創建成功"
   fi
   i=1
   until [ $i -gt 5 ]
   do
   	useradd stu$i -u $[2000+$i] && echo "stu$i:123" | chpasswd && echo "stu$i創建成功"
   	let i++
   done
   until [ $i -gt 10 ]
   do
   	useradd stu$i -d /rhome/stu$i && echo "stu$i:123" | chpasswd && echo "stu$i創建成功"
   	let i++
   done

23

24

10.編寫腳本收集用戶輸入的基本信息(姓名,性別,年齡),如果用戶不輸入一直提示用戶輸入,最后根據用戶輸入的信息輸出相應的內容。
    #!/bin/bash
    input_fun(){
    	input_var=""
    	output_var=$1
    	while [ -z $input_var ]
    	do
    		read -p "$output_var" input_var
    	done
    	echo $input_var
    }
    
    name=`input_fun 請輸入你的姓名:`
    sex=`input_fun 請輸入你的性別:`
    age=`input_fun 請輸入你的年齡:`
    
    echo "你的姓名是$name"
    echo "你的性別是$sex"
    echo "你的年齡是$age"

26


免責聲明!

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



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