shell命令解析器
1.shell指令碼是乙個包含一系列命令序列的文字檔案,當執行這個指令碼檔案時,檔案中包含的命令序列將得到執行。
2.shell指令碼有兩種執行方式
(1)互動式:使用者輸入一條命令,shell就執行一條
(2)批處理:寫成shell指令碼,一次性執行
3.shell指令碼編輯格式首先開頭
#!/bin/sh
如何新建乙個指令碼?
(1)vim demo.sh
編寫完之後執行
(2)sh demo.sh
4.注釋方式
(1)行注釋:#
(2)段注釋::<
!eof!
5.在shell程式設計中,所有的變數都由字串組成,並且不需要預先對變數進行宣告。
命名規範:
①首個字元必須為字母;
②中間不能有空格,可以有下劃線
③不能使用標點符號,不能使用bash中的關鍵字
6.shell指令碼中換行的如何使用
例子:echo -e "dsf \n"#-e是對字元\n進行轉換
7.shell指令碼中變數的設定
例子:#!/bin/sh
num=2
echo "this is the $num"
#對變數的引用加$
8.唯讀變數:readonly num=2
刪除變數:unset num(不能刪除唯讀變數)
9.在shell指令碼中全域性變數在函式使用完之後值是不會改變的
10.宣告區域性變數:例子:local hello="var2"
注意:1、變數賦值時,「=」左右兩側都不能有空格
2、bash中的語句結尾不需要分號
11.if語句的使用
例子:if [ ]
then
....
else if [ ]
then
.....
else
.....
fifi
#fi對應著上乙個的if
11.比較
比較操作整數操作字串操作
相同 -eq =
不同 -ne !=
大於 -gt >
小於 -lt
<
大於或等於 -ge
小於或等於 -le
為空 -z
不為空 -n
例:比較整數a和b是否相等:if [ $a = $b ] (或eq)
判斷整數a是否大於整數b:if [ $a -gt $b ]
比較字串a和b是否相等:if [ $a = $b ]
判斷字串a是否為空:if [ -z $a ]
判斷整數變數a是否大於b:if [ $a -gt $b ]
注意:1、在「[」和「]」的左右都留有空格
2、「=」左右都有空格
12.for迴圈
for 變數 in [ ]
do。。。。。
done
例子:for day in sun mon tue wed thu fri sat
doecho $day
done
輸出的結果就是:
sunmon
tuewed
thufri
sat
13.while迴圈
while 迴圈的基本結構是:
while [ condition ] #condition為真執行
do 。 。。。。。
done
例子:#!/bin/sh
read count
a=1add=0
while [ $a -le $count ]
doadd=`expr $add + $a`
a=`expr $a + 1`
done
echo "add = $add
#這個例子是指鍵盤輸入兩個數,然後結果為這連個數的遍加
#`這個是鍵盤上1的左邊那個鍵位
14.until迴圈
until [ condition ] #condition為假時執行
do。。。。
done
15.case語句的使用(類似於c中的switch)
例子:case 2 in
1) ;;
2) echo "sadasf" ;;
3);;
*);;
esca
#當鍵盤輸入2時,就會顯示結果為sadasf
#1、*)相當於default
#2、;;相當於break
16.函式的使用
格式:function function_name ( )
(1)函式返回值,可以顯式增加return語句;如果不加,會將最後一條命令執行結果作為返回值。
(2)shell 函式返回值只能是整數
(3)刪除函式:$unset .f function_name
17.陣列的使用
(1)在shell中,用括號來表示陣列,陣列元素用「空格」符號分割開。定義陣列的一般形式為:
array_name=(value1 ... valuen)
(2)還可以單獨定義陣列的各個分量:可以不使用連續的下標,而且下標的範圍沒有限制。
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
(3)讀取陣列元素值的一般格式是:
$(4)
使用@ 或 * 可以獲取陣列中的所有元素:$$
(5)獲取陣列的個數:
number=$或length=$
取得陣列單個元素的長度
length=$
*18.在編寫shell指令碼時一定要注意空格的使用,不然會出現錯誤
Shell學習 2 Shell變數
在shell中,變數的定義很簡單。shell變數 定義變數 var ddiicey 需要注意的是,與平時我所編寫的高階語言 c c python 等不同,變數名和 之間不能有空格。變數名的命名與其他語言一樣都遵循如下規則 下面給出了shell中一些合法以及非法的變數名示例 合法的變數名 runoob...
linux複習2(shell指令碼3)
1 設計乙個shell程式,判斷一檔案是不是塊或字元裝置檔案,如果是將其拷貝到 root mydev目錄下。1 echo e please input a filename 2 read filename 3 if c filename then 4 cp filename mydev 5 else...
Mac OS操作相關(2) shell命令篇
本文目錄 本文簡介 在windows下,有cmd供我們編寫命令列,執行一些基本功能 在linux下,有terminater終端供我們編寫命令列,操作一些任務 同樣的,在mac下也提供這樣的乙個命令列執行平台,它也叫做terminater終端 unix shell 讓我們來學習下mac下的termin...