使用多條指令
shell腳本的關鍵是可以輸入多條指令,甚至可以将一條指令的結果傳遞給另一條指令。
date;who(兩個指令shell腳本的寫法)
建立shell腳本
1.将shell指令放置到一個文本檔案中
2.指明所使用的shell,比如#!/bin/bash
3.可以用#注釋,但是一般注釋不會被讀取,第一行除外
案例
#!/bin/bash
#This script displays the date and who's logged on
date
who
4.儲存為test1
5.将shell腳本檔案所在的目錄添加到PATH環境變量中(
a.修改~/.bash_profile
PATH=PATH:PATH:HOME/bin:/home/jiqing9006/shellscript
export PATH
b.執行source ~/.bash_profile)
6.在指令行提示符中使用檔案的絕對路徑或相對路徑來引用該shell腳本
顯示消息
echo Let's see if this'll work(輸出字元串,如果有單引号最好将整個字元串包在“”當中,否則單引号可能不會被輸出。)
echo -n "The time and date are:"
date(-n讓字元串與執行結果顯示在一行中)
使用變量
變量允許在shell腳本中暫存資訊,以便與腳本中其他指令一起使用。
#display user information from the system.
echo "User info for userid:USER"echoUID:USER"echoUID:UID
echo HOME: HOMEechoPATH:HOMEechoPATH:PATH
(腳本中有一些變量的使用)
如果想顯示$符,可以加\,如下所示
echo "The cost of the item is \$15"
使用者變量
# testing variables
days=10
guest="Jiqing"
echo "guestcheckedinguestcheckedindays days ago"
days=5
guest="Jessica"
(定義使用者自己的變量days,guest。這一點跟php有點相近)
# assigning a variable value to another variable
value1=10
value2=value1echoTheresultvalueisvalue1echoTheresultvalueisvalue2
(用變量給變量指派)
反引号``
反引号允許将shell指令的輸出指派給變量。必須将整個指令行指令用反引号包圍起來。
testing=`date`(注意不是單引号,是~下面的那麼符号)
#using the backtick character
testing=`date`
echo "The date and time are:" testing #!/bin/bash #using the backtick character today=`date +%y%m%d` ls /usr/bin -al > log.testing #!/bin/bash #using the backtick character today=`date +%y%m%d` ls /usr/bin -al > log.today(将ls /usr/bin -al 查詢出來的結果寫到log.$today檔案中,執行完之後會發現新增一個log檔案,裡面都是查詢出來的内容)
重定向輸入輸出
有時候想通過指令儲存輸出,而不是隻在顯示器顯示輸出。
輸出重定向
date >test6(将date指令查詢的結果儲存到檔案test6中)
date >>test6(将資訊追加到test6檔案中)
輸入重定向(與輸出相反的動作)
wc <test6(将文本檔案的内容重定向到wc指令下,供wc統計使用)
管道
有時候需要将一個指令的輸出發送到另一個指令的輸入。
rpm -qa(列出所有被安裝的rpm package )
|
将一個指令的輸出發送到另一個指令的輸入。
rpm -qa >rpm.list
sort rpm.list
(等價于rpm -qa|sort)
亦可以将重定向技術與管道結合使用
rpm -qa |sort >rpmlist
數學計算
a.expr指令
expr 1 + 2(注意要用空格,吓死我了,以為不能用來着)
expr 5 \* 2(使用乘法需要加反斜杠)
#An example of using the expr command
var1=10
var2=20
var3=`expr var2/var2/var1`
echo "The value of var3 is:"var3(定義兩個變量,用expr計算結果,儲存到var3中,輸出結果)b.使用括号var3(定義兩個變量,用expr計算結果,儲存到var3中,輸出結果)b.使用括号[]
echo [1+2](輸出3) #!/bin/bash var1=100 var2=50 var3=45 var4=[1+2](輸出3) #!/bin/bash var1=100 var2=50 var3=45 var4=[var1∗(var1∗(var2-var3)]echoThefinalresultisvar3)]echoThefinalresultisvar4
(括号讓數學計算更加簡便了,結果為500)
c.浮點解決方案
bash電腦實際上是一種程式設計語言,該語言允許在指令行中輸入浮點表達式,然後解釋表達式并計算它們,最後傳回結果。
輸入bc進入指令模式
輸入quit退出指令模式
在腳本中使用bc
var1=`echo " scale=4;3.44/5"|bc`
echo The answer is var1 (将指令的結果儲存給變量var1,指令中用了管道技術,輸出指令給bc,bc執行之後傳回結果) 來看更多的例子 #!/bin/bash var1=100 var2=45 var3=`echo " scale=4;var1 (将指令的結果儲存給變量var1,指令中用了管道技術,輸出指令給bc,bc執行之後傳回結果) 來看更多的例子 #!/bin/bash var1=100 var2=45 var3=`echo " scale=4;var1/var2"|bc‘echoTheanswerforthisisvar2"|bc‘echoTheanswerforthisisvar3
(結果為2.2222)
var1=20
var2=3.14159
var3=`echo " scale=4;var1∗var1∗var1"|bc`
var4=`echo " scale=4;var3∗var3∗var2"|bc`
echo The answer is var4 (計算圓的面積) 還可以用EOF來計算,更加的友善,清晰 #!/bin/bash var1=10.46 var2=43.67 var3=33.2 var4=71 var5=`bc<<EOF scale = 4 al = (var4 (計算圓的面積) 還可以用EOF來計算,更加的友善,清晰 #!/bin/bash var1=10.46 var2=43.67 var3=33.2 var4=71 var5=`bc<<EOF scale = 4 al = (var1*var2)b1=(var2)b1=(var3*var4)a1+b1EOF‘echoTheanswerisvar4)a1+b1EOF‘echoTheanswerisvar5
退出腳本
$?儲存最後一條指令執行結束的退出狀态。
一條指令成功完成的退出狀态是0。如果指令執行錯誤,那麼退出狀态就會是一個正整數。
0 完成
1 未知錯誤
2 誤用shell
126 指令無法執行
127 沒有找到指令
..
exit指令允許在腳本結束時,指定一個退出狀态。
本文轉自TBHacker部落格園部落格,原文連結:http://www.cnblogs.com/jiqing9006/p/3196070.html,如需轉載請自行聯系原作者