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