【CentOS Linux 7】实验2【Shell编程及应用】
- Linux系統及應用---調研報告
- 實驗4文檔:gcc編譯器、Linux網絡配置基礎
目? ?錄
【實驗目的】
【實驗步驟】
(1)使用for語句創建一個shell程序,其功能為1+2+3+…+n。
(2)給下列程序加上注釋
(3)從鍵盤輸入三個數并進行升序排序,然后輸出到屏幕。
(4)給下列程序加上注釋
(5)打印九九乘法表
(6)給下列程序加上注釋
(7)給下列程序加上注釋
(8)給下列程序加上注釋
(9)打印斐波那契數列
【實驗總結】
【實驗目的】
【實驗步驟】
(1)使用for語句創建一個shell程序,其功能為1+2+3+…+n。
程序源代碼為:
#!/bin/bash??? # “#!”是一個約定的標記,它告訴系統這個腳本需要什么解釋器來執行 read -p "what's n? :" n ????????# read-p 后面跟提示信息,即在輸入前打印提示信息 s=0??????????????????????????? # 初始化累加和 for (( i=1; i<=$n; i=i+1)) ????# for循環,用來累加和 do s=$(( $s+$i ))???????????? # 增加s的值 done echo "1+2+...+$n = $s"??????? # 輸出累加和s運行截圖為:
(2)給下列程序加上注釋
#!/bin/bash??? # “#!”是一個約定的標記,它告訴系統這個腳本需要什么解釋器來執行 num=$[RANDOM%100+1] ??# RANDOM 為系統自帶的系統變量,值為 0‐32767的隨機數 echo "$num" ??????????# echo 命令用于向窗口輸出 產生的隨機數。 while? :?????????? ??# while循環語句 doread -p "計算機生成了一個 1‐100 的隨機數,你猜: " cai # 使用 read 提示用戶猜數字;read-p 后面跟提示信息,即在輸入前打印提示信息if [ $cai -eq $num ] ???????#if條件語句;如果 隨機數 等于 用戶所輸入的數字thenecho "恭喜,猜對了"????? #if語句,命令行1:輸出“恭喜,猜對了”exit ????????????????????#exit命令用于退出目前的shell程序elif [ $cai -gt $num ]? ????#if語句,命令行2thenecho "Oops,猜大了"elseecho "Oops,猜小了"fi????????????????????????? # if else-if else 語法格式 終止 done??????????????????????????? # while循環語句 終止(3)從鍵盤輸入三個數并進行升序排序,然后輸出到屏幕。
程序源代碼為:
#!/bin/bash read -p "請輸入一個整數:" num1???? # 從命令行輸入1個數字 read -p "請輸入一個整數:" num2???? # 從命令行輸入1個數字 read -p "請輸入一個整數:" num3???? # 從命令行輸入1個數字 tmp=0??? # 定義1個臨時變量存放數據 # 將num1和num2進行比較,如果num1大于num2,將num1和num2的值對調 if [ $num1 -gt $num2 ];thentmp=$num1num1=$num2num2=$tmp fi if [ $num1 -gt $num3 ];then???? # 如果num1大于num3,將num1和num3的值對調tmp=$num1num1=$num3num3=$tmp fi if [ $num2 -gt $num3 ];then??? # 如果num2大于num3,將num2和num3的值對調tmp=$num2num2=$num3num3=$tmp fi echo "排序后數據(從小到大)為:$num1,$num2,$num3"運行截圖為:
(4)給下列程序加上注釋
#!/bin/bash??? # “#!”是一個約定的標記,它告訴系統這個腳本需要什么解釋器來執行 game=(石頭 剪刀 布) ???? #定義數組,保存所有出拳的可能性;0:石頭,1:剪刀,2:布 num=$[RANDOM%3]?? ??????#隨機數0?1?2 computer=${game[$num]} ?#通過 隨機數,獲取計算機的出拳手勢echo "請根據下列提示選擇您的出拳手勢" echo "1.石頭" echo "2.剪刀" echo "3.布"read -p "請選擇 1‐3:" person ??#read-p 后面跟提示信息,提示用戶出拳 #通過case語句判斷用戶輸入的值是1、2還是3,根據不同的輸入 輸出 不同的結果 case? $person? in 1)if [ $num -eq 0 ] ????#如果電腦產生的隨機數是0,則 平局thenecho "平局"elif [ $num -eq 1 ] ??#如果電腦產生的隨機數是1,則 用戶贏thenecho "你贏"elseecho "計算機贏"?? ?#不符合以上兩種情況,則 計算機贏fi;; 2)??if [ $num -eq 0 ] ????#如果電腦產生的隨機數是0,則 計算機贏thenecho "計算機贏"elif [ $num -eq 1 ] ??#如果電腦產生的隨機數是1,則 平局thenecho "平局"elseecho "你贏"? ??????#不符合以上兩種情況,則 用戶贏fi;; 3)if [ $num -eq 0 ] ????#如果電腦產生的隨機數是0,則 用戶贏thenecho "你贏"elif [ $num -eq 1 ] ????????????#如果電腦產生的隨機數是1,則 計算機贏thenecho "計算機贏"elseecho "平局"?????????????? ???#不符合以上兩種情況,則 平局fi;; *)??? ????????????????????????????#case命令的最后運算式echo "必須輸入 1‐3 的數字!" ??#若用戶輸入錯誤,則輸出 提示信息 esac(5)打印九九乘法表
程序源代碼為:
#!/bin/bash echo -e "\n"?????????? ???????????????#換行 for((i=1;i<=9;i++))? ?????????????????#第一重for循環 dofor((j=1;j<=i;j++))? ??????????????#第二重for循環doecho -n -e "$j*$i="$[j*i]"\t"?? #打印九九乘法表doneecho -e "\n"?????????????????????? #換行 done運行截圖為:
(6)給下列程序加上注釋
#!/bin/bash??? # “#!”是一個約定的標記,它告訴系統這個腳本需要什么解釋器來執行 # ?ls命令用于顯示指定工作目錄下之內容(列出目前工作目錄所含之文件及子目錄) for i in "ls *.$1" domv $i ${i%.*}.$2? # mv命令用來為文件或目錄改名、或將文件或目錄移入其它位置 done(7)給下列程序加上注釋
#!/bin/bash read -p "請輸入一個年份:" year??? # 使用 read-p 提示用戶輸入年份if [ "$year" = "" ];then???????? #如果用戶沒有輸入任何內容,則輸出提示信息echo "沒有輸入年份"exit fiif [[ "$year" =~ [a‐Z] ]];then #如果用戶輸入的是a-Z中的字符,則輸出提示信息echo "你輸入的不是數字"exit??????????????????????? # exit命令用于退出目前的shell fiif [ $[year % 4] -eq 0 ] && [ $[year % 100] -ne 0 ];then #根據用戶輸入,判斷閏年echo "$year年是閏年"??????????? #能被4整除且不能被100整除的年份,是閏年 elif [ $[year % 400] -eq 0 ];then?? #能被400整除的年份,是閏年echo "$year年是閏年" elseecho "$year年不是閏年" fi(8)給下列程序加上注釋
#!/bin/bash for i in {1..3}???????????? #for循環;用戶有3次輸入用戶名與密碼的機會 doread -p "請輸入用戶名:" user #read-p 后面跟提示信息,即在輸入前打印提示信息read -p "請輸入密碼:"?? pass if [ "$user" == 'tom' -a "$pass" == '123456' ];then #若用戶名與密碼匹配,則執行下列語句echo "Login successful"exit??????????????????? ?# exit命令用于退出目前的shellfi done echo "Login Failed"(9)打印斐波那契數列
程序源代碼為:
#!/bin/bash #輸入數字n顯示斐波那契數列的前n項a=1 ????????????????? ???????? #第一項 b=1???????? ???????? #第二項 c=0???????? ???????? #中間變量,用來儲存a的值 Fibonacci=0??????????#斐波那契數列的第n項 read -p "輸入數字n,顯示數列的前n項" n#如果n<=3則輸出前三項 if [ "${n}" -le "3" ]; thencase ${n} in"1")Fibonacci=${a}echo -e "${Fibonacci}";;"2")Fibonacci=${a}echo -e "${Fibonacci}"echo -e "${Fibonacci}";;"3")Fibonacci=${a}echo -e "${Fibonacci}"echo -e "${Fibonacci}"Fibonacci=$((${a}+${b}))echo -e "${Fibonacci}"esac fi#如果n>=4,輸出剩余的項 if [ "${n}" -ge "4" ]; thenFibonacci=${a}echo -e "${Fibonacci}"echo -e "${Fibonacci}"Fibonacci=$((${a}+${b}))echo -e "${Fibonacci}"for ((i=4; i<=${n}; i=i+1 ))doc=${a}a=${b}b=$((${c}+${b}))Fibonacci=$((${a}+${b}))echo -e "${Fibonacci}"done fi運行截圖為:
【實驗總結】
通過本次實驗,我對Shell更加熟悉。通過實驗,我了解到:Shell腳本可以作為命令語言互動式地解釋和執行用戶輸入的命令,還能夠用來進行程序設計,它提供了定義變量和參數的手段以及豐富的過程控制結構。
在實驗中,我體會到了Shell的靈活性。Shell程序基本語法較為簡單,主要由開頭部分、注釋部分以及語句執行部分組成。它還可以提供說明與使用變量的功能。另外,在Shell中,所有變量的取值都是一個字符,我認為 這非常方便。Shell在開始執行時,就已經定義了一些與系統的工作環境相關的變量,如:HOME:用于保存注冊目錄的完全路徑名;PATH:用于保存用冒號分隔的目錄路徑名,shell將按PATH變量中給出的順序搜索這些目錄,找到的第一個與命令名稱一致的可執行文件將被執行。
此次實驗,收獲甚多,課下我會繼續努力,多查資料,勤于練習!
總結
以上是生活随笔為你收集整理的【CentOS Linux 7】实验2【Shell编程及应用】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【CentOS Linux 7】【Lin
- 下一篇: 【CentOS Linux 7】【gcc