歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Shell學習(二)入門到復雜 腳本實例(計算器)

Shell學習(二)入門到復雜 腳本實例(計算器)

日期:2017/3/3 16:14:49   编辑:關於Linux

shell文件開頭

shell文件必須以下面的行開始(必須方在文件的第一行):

#!/bin/sh

符號#!用來告訴系統它後面的參數是用來執行該文件的程序。在這個例子中我們使用/bin/sh來執行程序。

當編輯好腳本時,如果要執行該腳本,還必須使其可執行。

要使腳本可執行:

運行chmod +x filename這atch樣才能用./filename 來運行

注釋

在進行shell編程時,以#開頭的句子表示注釋,直到這一行的結束。我們真誠地建議您在程序中使用注釋。

變量

在shell編程中,所有的變量都由字符串組成,並且您不需要對變量進行聲明,直接賦值就可以,應用變量的話,用$+變量名的形式。

要賦值給一個變量,您可以這樣寫:

a="hello world"

現在打印變量a的內容:

echo "A is:"

echo $a

有時候變量名很容易與其他文字混淆,比如:

num=2

echo "this is the $numnd"

這並不會打印出"this is the 2nd",而僅僅打印"this is the ",因為shell會去搜索變量numnd的值,

但是這個變量時沒有值的。可以使用花括號來告訴shell我們要打印的是num變量:

num=2

echo "this is the ${num}nd"

這將打印: this is the 2nd

環境變量

.由export關鍵字處理過的變量叫做環境變量。我們不對環境變量進行討論,因為通常情況下僅僅在登錄

腳本中使用環境變量。
這些不是系統命令,但是他們真的很重要。

管道(|): 將一個命令的輸出作為另外一個命令的輸入。

grep "hello" file.txt | wc -l

在file.txt中搜索包含有”hello”的行並計算其行數。

在這裡grep命令的輸出作為wc命令的輸入。當然您可以使用多個命令。

重定向:將命令的結果輸出到文件,而不是標准輸出(屏幕)。

>寫入文件並覆蓋舊文件

>>加到文件的尾部,保留舊文件內容。

反短斜線

使用反短斜線("`")可以將一個命令的輸出作為另外一個命令的一個命令行參數。

數值變量:

expr 變量1 運算符 變量2 [運算符 變量3]

+加法運算

-減法運算

\*乘法運算

%求模運算 相除後的余數

預定義變量是由bash程序預先定義好的一類特殊變量,用戶只能使用而不能創建新的預定義變量,也不能直接為預定義變量賦值。常見預定義變量如下:

$#表示命令行中位置參數的個數

$*表示所有位置參數的內容

$?表示前一條命令執行後的返回狀態,返回為0表示執行正確,任何非0表示運行出現異常

$0表示當前執行的腳本或程序名稱

計算器腳本實例:

 

代碼:(因為剛學 做的可能不怎麼好這是本人自己做的,下面第二種方法附上老師做的,雖然功能都一樣!但是代碼量明顯比我小很多!)

#!/bin/bash

#計算器

echo "----------------------"

echo "- 加法運算請輸入1 -"

echo "- 減法運算請輸入2 -"

echo "- 乘法運算請輸入3 -"

echo "- 除法運算請輸入4 -"

echo "- -技術空創作 -"

echo "----------------------"

read -p "請選擇你想要進行的運算" int

case "$int" in

1)

while :

do

read -p "請輸入第一個整數" a

expr $a+0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第一個數是$a"

break

else

echo "您輸入的$a不是整數請重新輸入"

fi

done

while :

do

read -p "請輸入第二個整數" b

expr $b +0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第二個數是$b"

break

else

echo "您輸入的$b不是整數請重新輸入"

fi

done

sum=`expr $a + $b`

echo "$a + $b = $sum"

;;

2)

while :

do

read -p "請輸入第一個整數" c

expr $c+0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第一個數是$c"

break

else

echo "您輸入的$c不是整數請重新輸入"

fi

done

while :

do

read -p "請輸入第二個整數" d

expr $d+0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第二個數是$d"

break

else

echo "您輸入的$d不是整數請重新輸入"

fi

done

jian=`expr $c - $d`

echo "$c - $d = $jian"

;;

3)

while :

do

read -p "請輸入第一個整數" e

expr $e+0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第一個數是$e"

break

else

echo "您輸入的$e不是整數請重新輸入"

fi

done

while :

do

read -p "請輸入第二個整數" f

expr $f +0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第二個數是$f"

break

else

echo "您輸入的$f不是整數請重新輸入"

fi

done

chen=`expr $e \* $f`

echo "$e \* $f = $chen"

;;

4)

while :

do

read -p "請輸入第一個整數" q

expr $q+0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第一個數是$q"

break

else

echo "您輸入的$q不是整數請重新輸入"

fi

done

while :

do

read -p "請輸入第二個整數" w

expr $w+0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第二個數是$w"

break

else

echo "您輸入的$w不是整數請重新輸入"

fi

done

chu=`expr $q / $w`

echo "$q / $w = $chu"

;;

esac

------------------------------------------------------------------------------------------------------

#!/bin/bash

echo " ----------------------------------"

echo "|這是一個簡單的整數計算器,作者YUAN|"

echo " ----------------------------------"

echo

while :

do

read -p "請輸入一個整數: " nu

expr $nu + 0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第一個數是$nu"

echo

break

else

echo "您輸入的$nu不是整數請重新輸入"

fi

done

while :

do

read -p "請輸入二個整數: " nu2

expr $nu2 + 0 &> /dev/null

if [ $? -eq 0 ]

then

echo "第二個數是$nu2"

break

else

echo "您輸入的$nu2不是整數請重新輸入"

fi

done

echo "------------------"

echo "| 1.加法 |"

echo "| 2.減法 |"

echo "| 3.乘法 |"

echo "| 4.除法 |"

echo "------------------"

read -p "請輸入您想執行的算法:" me

case $me in

"1")

sum=`expr $nu + $nu2`

echo "$nu+$nu2=$sum"

;;

"2")

jian=`expr $nu - $nu2`

echo "$nu-$nu2=$jian"

;;

"3")

chen=`expr $nu \* $nu2`

echo "$nu*$nu2=$chen"

;;

"4")

chu=`expr $nu / $nu2`

echo "$nu/$nu2=$chu"

esac

老師的代碼很精簡比我的代碼少多了,不過剛開始都這樣!慢慢來慢慢學!創意也是一種學習的方法

最後附上個自己做的猜價格小游戲:

腳本如下:

#!/bin/bash

#猜價格游戲

i=10

jiage=`expr $RANDOM % $i`

times=0

echo "商品實際價格在0-9之間,猜猜看是多少?"

while true

do

read -p "請輸入你猜測的價格數目:" INT

let times++

if [ $INT -eq $jiage ] ; then

echo "恭喜你答對了,實際價格是 $jiage"

echo " 你總共猜測了$times 次"

exit 0

elif [ $INT -gt $jiage ] ; then

echo "太高了"

else

echo "太低了"

fi

done

本文出自 “▁▁技術控ヽ” 博客,請務必保留此出處http://chenhao6.blog.51cto.com/6228054/1232070

Copyright © Linux教程網 All Rights Reserved