實驗四
shell
程式設計:
shell
控制語句
實驗目的
進一步鞏固
shell
程式語言基本語法,加深對所學知識理解。
實驗內容
要求學生掌握以下內容
(1)
條件表示式
(2)
判斷和分支語句
(3)
迴圈語句
(4) 函式
實驗內容 1
條件表示式
$ test 10 -gt 5//
算數表示式
10>5
$ echo $?//
顯示上述表示式的執行結果
$ [ 10 -lt 5 ] //
算數表示式
10<5
$ echo $?
2. 條件和分支語句
使用編輯器
vi編輯下列
shell指令碼
(1)判斷輸入的使用者名稱是否為當前使用者名稱
#!/bin/bash
echo -n "enter your login name:"
read name
if [ "$name" ="$user" ];
then
echo "hello, $name. how areyou today ?"
else
echo "you are not $user, sowho are you ?" fi
將上述指令碼儲存至
test_uf.sh,
執行該指令碼
$ bash test_uf.shzhangs
(2)
判斷當前所處的時間
#!/bin/bash
hour=`date +%h`
case $hour in
0[1-9] | 1[01] )
echo "good morining !!" ;;
1[2-7] )
echo "good afternoon !!" ;;
* )
echo "good evening !! " ;;
esac
將上述指令碼儲存至檔案
test_case.sh
,執行該程式
$ bashtest_case.sh //
觀察執行結果
3. 迴圈語句
(1)計算最小值
#!/bin/bash
smallest=10000
for i in12 5 18 58 -3 80
doif test $i -lt$smallest
then
smallest=$i fi
done
echo " thesmallest number is: $smallest"
將上述指令碼儲存至
test_for.sh,
執行該指令碼
$ bashtest_for.sh//
觀察執行結果
(2)計算1
到100
之間整數的和
#!/bin/bash
i=1sum=0
while [ $i -le 100]
dosum=`expr $sum + $i`
i=`expr $i + 1`
done
echo the sum is$sum
將上述指令碼儲存至檔案
test_while.sh,
執行該指令碼
$ bashtest_while.sh
4. 函式
運用函式判斷兩個數的大小
#!/bin/bash
compare()
compare $1 $2
case $?in0)
echo "$1 = $2" ;;
1)echo "$1 > $2" ;;
2)echo "$1 < $2" ;;
esac
將上述指令碼儲存至檔案
test_fun.sh,
執行該指令碼
$ bash test_fun.sh10 36 //
觀察執行結果
5. 思考題
1. 函式內的
$1,$2
與函式外的
$1,$2
有何區別
函式內的$1和$2是指變數,而函式外的$1,$2則是新增到shell的各引數值。$1是第1引數、$2是第2引數 若在
正規表示式中,匹配出的第1、2、3個子表示式
2. 給出本地變數的作用域
作用域為整個bash程序
Linux 實驗四 Shell程式設計
熟練掌握重定向 管道 命令連線符和使用awk文字分析器提取文字內容的方法。掌握shell指令碼的編寫和執行方法。ubantu或centos 重定向操作符的使用 管道命令連線符 awk文字分析器 shell指令碼程式設計 輸入重定向 輸出重定向 錯誤重定向管道的功能為連線命令,使前乙個命令的輸出,作為...
shell程式設計 四
linux中bash的變數值是以字串的形式儲存的,所以如果想當作數字使用的話需要進行轉換 前面已經用到了一些,但沒有系統的總結 此外,shell中所有的算術運算都被當作整數運算,所以在有浮點數參與時要特別處理 計算算式的值,使用shell變數的值的時候不用 bin bash x 5 y 6 let ...
shell程式設計筆記(四)
case語句 語法 case 字串 in 值1 值2 操作 值3 值4 操作 值5 值6 操作 操作 esac case的作用就是當字串與某個值相同是就執行那個值後面的操作。如果同乙個操作對於多個值,則使用 將各個值分開。在case的每乙個操作的最後面都有兩個 分號是必須的。例 case user ...