Shell(二)入門到複雜 腳本實例(計算器)

Shell(二)入門到複雜 腳本實例(計算器)
shell文件開頭

shell文件必須以下面的行開始(必須方在文件的第一行):
#!/bin/sh
符號#!用來告訴系統它後面的參數是用來執行該文件的程序。在這個例子中我們使用/bin/sh來執行程序。
當編輯好腳本時,如果要執行該腳本,還必須使其可執行。
要使腳本可執行:
運行chmod +x filename這樣才能用./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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章