shell腳本關鍵在于輸入多個命令并且處理每個命令的結果,將一個命令結果傳給另外一個命令。
兩個命令在一起運行,用分號隔開
echo 可以顯示簡單的文本字符串
echo this is a test 可以不加雙引號
但是如果字符串中有雙引號的話,就要用其他引號將字符串圈起來
echo "this is a test to see if you're paying attention"
在同一行顯示一個文本字符串作為命令輸出
echo -n "the time and date are:"
之后輸出的內容就會在一行
使用變量,$PATH
但是要使用美元符號,就要加反斜杠
echo "the cost of the item is $15"
${variable}引用的變量,用來幫助識別美元符號后的變量
shell腳本會自動決定變量值的數據類型
引用一個變量值的時候需要使用美元符,但是引用變量來進行復制的時候不需要美元符。
沒有美元符,shell會將其解釋為文本字符串
反引號允許將shell命令輸出賦給變量
testing=`date`
date +%y%m%d
110131
就算是這樣
testing=date
$testing就會直接運行date命令```
###輸出重定向
command > outputfile
>會覆蓋已有的文件
>>來追加數據
輸入重定向
<
命令總是在左側,重定向符號指向數據流動的方向,表示從輸入文件流向命令
wc < test6
內聯輸入重定向<<
指定一個文本標記來劃分要輸入數據的開始和結尾
command << marker
data
marker
比如這樣
wc << EOF
test string 1
test string 2
test string 3
EOF
取代將命令的輸出重定向到文件,可以重定向輸出到另一個命令,這個過程是管道連接
command1 | command2
Linux系統其實會同時運行這兩個命令,系統內部連接起來,第一個命令產生輸出的同時,輸出會立即被送到第二個命令,傳輸數據不會用到任何中間文件和緩沖區域
管道最流行的用法是將命令產生的長輸出結果通過管道傳送給more命令
對ls命令非常普遍,可以強制在每屏數據的末尾停下來
ls -l | more```
執行數學運算
使用expr命令
expr 1 + 5
expr也可以識別其他的操作符
如> < | & <= >= = != + - * / %
index length
expr 5 \* 2
將星號轉義,因為*表示通配符
要在shell腳本中將一個數學算式的結果賦給一個變量,需要反引號來獲取expr命令的輸出
var3=`expr $var2 / $var1`
或者var3=$(expr $var2 / $var1)```
###執行數學表達式更簡單的方法
$[ operation ]
var1=$[ 1 + 5 ]
echo $var1
并且不用誤解乘號
var2=$[ $var1 * 2 ]
bash shell只支持整數運算```
退出腳本
退出狀態碼,命令結束運行的時候傳給shell,捕獲這個值并且在腳本中使用
$? 成功的時候為0
exit命令
shell腳本會以腳本中最后一個命令的退出狀態碼退出
exit可以指定一個退出狀態碼