Shell可以看作是一個命令列直譯器,它是Unix作業系統下傳統的使用者和計算機的互動介面,使用者直接輸入命令來執行各種各樣的任務,它類似於Windows 9X下的command.com或者是基於Windows NT的各種系統下的cmd.exe;同時Shell又是一種程式設計語言,它可以互動式解釋和執行使用者輸入的命令或者自動地解釋和執行預先設定好的一連串的命令。
Linux系統提供多種不同的Shell以供選擇。常用的有Bourne Shell(簡稱sh)、C-Shelll(簡稱csh)、Korn Shell(簡稱ksh)和Bourne Again Shell (簡稱bash)。
Shell指令碼執行方式:
(1) 輸入定向到Shell指令碼(Shell從檔案中讀取命令後執行)
bash < 指令碼名
(2) 以指令碼名作為引數(也可以:· 指令碼名引數)
bash 指令碼名 引數1 引數2
(3) 將Shell指令碼的許可權設定為可執行,然後在提示符下直接執行它。
chmod a+x 指令碼名
指令碼名
注意:如果在shell中指定了#!/bin/bash;可以不用在crontab中寫bash,直接/xx/xx/xx.sh即可
Shell語法分析:
1.變數:
(1)定義:變數名=字串
(2)使用(列印變數的值): echo $變數名
(3)變數賦值:
普通的賦值
xx="dd dkkd dd"
將命令的結果賦值,有兩種形式
a) `命令`:
var = ` pwd `
b) $(命令):
var=${pwd}
2.陣列:
(1)定義:
a) 陣列名[下標]=值
b) declare -a 陣列名
c) a=(a1 a2 a3 a4)
(2)陣列值:
${陣列名[下標]}
若沒有給出陣列元素的下標,則陣列名錶示下標為0的陣列元素
表示式${#arr[i]}的值是陣列arr第i個元素值的長度(字元個數)。
3.萬用字元:
* 表示匹配任意字元0次或多次出現
?表示匹配任意一個字元
[ ]表示其中任何一個字元
! 表示不在一對方括號中所列出的字元,a[!1-9] 即 a非1-9數字
+ 表示匹配任意字元1次或多次出現
(xx | xx) 表示或關係
4.引號:
(1)單引號: 普通字元
(2)雙引號:除“$”、“`”、“"”、“\”或換行符外,其他都作為普通字元
$ 表值
\ 跳脫字元
(3)倒引號: 命令列
如:pwd `
5.條件語句:
(1)if
if 條件
then 命令1
else 命令2
fi
(2)case
case 字串 in
模式字串1) 命令
…
命令;;
模式字串2) 命令
模式字串n) 命令
Esac
例如:
case $1 inone)echo "one";;two)echo "two";;three)echo "three";;*)echo "ohter"
exit 1esac
6.迴圈語句:
(1)while
while 條件
do
命令
Done
(2) until
until 測試條件
命令表
(3)for
for 變數 in 值(正則表示式)
7.Break與Continue
break n :表示跳出幾層迴圈,預設值是1,表示只跳出一層迴圈
continue n :表示從最內層迴圈體向外跳到第幾層迴圈,預設值是1
8.函式:
函式宣告如下:
函式名( )
{
}
函式定義也可以透過function關鍵字宣告:function函式名(){}。
Shell可以看作是一個命令列直譯器,它是Unix作業系統下傳統的使用者和計算機的互動介面,使用者直接輸入命令來執行各種各樣的任務,它類似於Windows 9X下的command.com或者是基於Windows NT的各種系統下的cmd.exe;同時Shell又是一種程式設計語言,它可以互動式解釋和執行使用者輸入的命令或者自動地解釋和執行預先設定好的一連串的命令。
Linux系統提供多種不同的Shell以供選擇。常用的有Bourne Shell(簡稱sh)、C-Shelll(簡稱csh)、Korn Shell(簡稱ksh)和Bourne Again Shell (簡稱bash)。
Shell指令碼執行方式:
(1) 輸入定向到Shell指令碼(Shell從檔案中讀取命令後執行)
bash < 指令碼名
(2) 以指令碼名作為引數(也可以:· 指令碼名引數)
bash 指令碼名 引數1 引數2
(3) 將Shell指令碼的許可權設定為可執行,然後在提示符下直接執行它。
chmod a+x 指令碼名
指令碼名
注意:如果在shell中指定了#!/bin/bash;可以不用在crontab中寫bash,直接/xx/xx/xx.sh即可
Shell語法分析:
1.變數:
(1)定義:變數名=字串
(2)使用(列印變數的值): echo $變數名
(3)變數賦值:
普通的賦值
xx="dd dkkd dd"
將命令的結果賦值,有兩種形式
a) `命令`:
var = ` pwd `
b) $(命令):
var=${pwd}
2.陣列:
(1)定義:
a) 陣列名[下標]=值
b) declare -a 陣列名
c) a=(a1 a2 a3 a4)
(2)陣列值:
${陣列名[下標]}
若沒有給出陣列元素的下標,則陣列名錶示下標為0的陣列元素
表示式${#arr[i]}的值是陣列arr第i個元素值的長度(字元個數)。
3.萬用字元:
* 表示匹配任意字元0次或多次出現
?表示匹配任意一個字元
[ ]表示其中任何一個字元
! 表示不在一對方括號中所列出的字元,a[!1-9] 即 a非1-9數字
+ 表示匹配任意字元1次或多次出現
(xx | xx) 表示或關係
4.引號:
(1)單引號: 普通字元
(2)雙引號:除“$”、“`”、“"”、“\”或換行符外,其他都作為普通字元
$ 表值
\ 跳脫字元
(3)倒引號: 命令列
如:pwd `
5.條件語句:
(1)if
if 條件
then 命令1
else 命令2
fi
(2)case
case 字串 in
模式字串1) 命令
…
命令;;
模式字串2) 命令
…
命令;;
…
模式字串n) 命令
…
命令;;
Esac
例如:
case $1 inone)echo "one";;two)echo "two";;three)echo "three";;*)echo "ohter"
exit 1esac
6.迴圈語句:
(1)while
while 條件
do
命令
Done
(2) until
until 測試條件
do
命令表
Done
(3)for
for 變數 in 值(正則表示式)
do
命令表
Done
7.Break與Continue
break n :表示跳出幾層迴圈,預設值是1,表示只跳出一層迴圈
continue n :表示從最內層迴圈體向外跳到第幾層迴圈,預設值是1
8.函式:
函式宣告如下:
函式名( )
{
命令
}
函式定義也可以透過function關鍵字宣告:function函式名(){}。