#/bin/bash
1
、萬用字元
*
:匹配任何字元和字串,包括Null 字元串。
?:匹配任意一個字元。如:?
abc
可以匹配任何以
abc
結束,以任一字元開關的四個字元的字串。
[…]
:匹配括弧裡列出的任何單字元。如
abd[def]
匹配以
abc
開頭,以
def
中任意一個字元結尾的字串。
2
、別名,自訂一個命令,作為其它命令的縮寫,減少鍵盤輸入。如:
alias list=’ls
-l’
取消別名:
unalias list
3
、給指令碼添加可執行許可權:
chmod +x file.sh
4
、
Shell
中的變數分為局部變數、環境變數、位置變數三種。
Shell
語言是解釋性語言,對一個變數進行賦值時,就定義了變數。
程式的變數無資料類型,可以使用同一個變數存放不同資料類型的值。
變數賦值後,加一個
$
訪問變數的值。
賦值符號:
=
沒有空格的字串的賦值,可以不用引號。
5
、環境變數,是一個使用者的所有進程中都可以訪問的變數。
使用
export
命令可以查看系統的環境變數列表。
環境變數的訪問,需要在一個環境變數的前面加
$
個符號。
定義一個環境變數:
export XX=1234
echo $XX
6
、位置變數,是
Shell
程式在運行時傳入的參數。程式以變數的形式來調用這些參數,被存放到
1~9
共
9
個變數名中,被形象地稱為位置變數。如
#!/bin/bash
#test.sh
echo $1
echo $2
執行:
./test.sh Beijing
abcd
結果如下:
Beijing
abcd
7
、算術運算子:
+
、
-
、
*
、
/
、
**
、
%
、
+=
、
-=
、
*=
、
/=
、
%=
8
、用
expr
改變運算順序。如
echo `expr 1+2`
,結果:
1+2, echo `expr 1 + 2`,結果:3
用
let
指示數學運算。
b=let 1+2
,然後用
echo $b
輸出
b
的值
3
$[]
表示數學運算。中括弧中的內容將先進行數學運算。如
echo $[1+2]
9
、
echo
命令可以輸出檔案或變數的值,是
Shell
中最常用的輸出方式。可以輸出到終端,或檔案。
echo $str
#
輸出到終端
echo $str
>file
#
輸出到檔案
file
中,如果沒有檔案,會建立一個。如果已經存在,將覆蓋以前的檔案。如果是追加輸出到檔案,改用
>>
。
格式控制符:
/c
,輸出完畢不換行;
/n
,輸出一個換行;
/t
輸出一個跳格;
echo
後加
-e
選項,輸出特殊字元。加
-n
可以禁止
echo
輸出後的換行。
10
、
read
命令讀取資訊
read
命令可以從鍵盤或檔案讀入資訊,並賦給一個變數。
如果唯讀入一個變數,會把鍵盤上輸入的所有資訊賦值給這個變數,
enter
鍵結束;如果讀放多個變數,用空格鍵將輸入的變數隔開。如果輸入變數的個數多於需要讀取變數的個數,將會把剩餘的變數賦值給最後一個變數。在讀取語句後添加
<filename
,表示從檔案中讀取資料,並且賦給變數。如
read A B <a.txt
11
、檔案重新導向:
cmd >
filename:
把標準輸出重新導向到一個檔案中
cmd >>
filename:
把標準輸出以追加的方式重新導向到一個檔案中
cmd 1 >
filename:
把標準輸出重新導向到一個檔案中
cmd
>filename 2>&1:
把標準輸出和標準錯誤一起重新導向到一個檔案中
cmd 2>
filename:
把標準輸出的錯誤得定向到一個檔案中
cmd
>>filename 2>&1
把標準輸出和標準錯誤一起追加到一個檔案中
cmd <
filename1 > filename2:
把
cmd
命令以
filename
檔案為標準輸入,以
filename2
檔案作為標準輸出
cmd <
filename
:把
cmd
命令以
filename
檔案作為標準輸入
例:將檔案
a.txt
中的所有小寫字母轉換成大寫字母,然後儲存到檔案
b.txt
中
tr ”[a-z]” “[A-Z]”
< a.txt > b.txt
12
、雙引號表示一個字串。字串中不能直接使用
$
、引號、雙引號、反斜線、反引號這些特殊字元。如果字串中沒有空格,使用雙引號將賦值的字串引起來,和不使用雙引號效果是一樣的。當字串中有空格時,用雙引號表示引號中的內容為一個字串。
13
、反引號,反引號
`
並不是單引號,而是
”Tab”
鍵上面的那個符號。反引號用於執行引號中的系統命令,然後將命令的結果返回。
echo `date`
A=`ls`
echo $A
14
、反斜線,用於對特殊字元進行轉義。
str=///%/*/&;echo $str
15
、檔案狀態測試
test –x a.txt
#
測試目前的目錄下的檔案
a.txt
是否可以執行
-d
測試檔案是否為目錄檔案
-s
是否非空
-f
是否是正規檔案
-w
是否可寫
-L
是否是符號串連
-x
是否可執行
-r
是否可讀
-u
是否有
suid
位設定
16
、數值測試,指的是比較兩個數值大小或相等關係。
test
命令:
test
第一個運算元
數值比較符
第二個運算元
用中括弧代替
test
命令:
[
第一個運算元
數值比較符
第二個運算元
]
數值比較符:
-eq:
相等
-ne
:不相等
-le
:小於或等於
-ge
:大於或等於
-gt
:大於
-lt
:小於
例:
test 3 –eq 5;
等價於
[ 3 –eq 5 ]
17
、字串測試符:
=
:兩個字串是否相等
!=
:是否不相等
-z
:是否是Null 字元串
-n
:非Null 字元串
18
、邏輯測試符:
-a
邏輯與;
-o
邏輯或;
!
邏輯否。
[
-w a.txt –a –x a.txt ]; echo $?
19
、流程式控制制結構
if
語句:
if
條件
then cmd1
else cmd2
fi
if
條件
1
then cmd1
elif
條件
2
then cmd2
else cmd3
fi
for
語句:
for
變數名
in
列表
do
cmd1
cmd2…
done
例:
#!/bin/bash
# 9 * 9
for i in 1 2 3 4 5
do
for j in 1 2 3
4 5
do
if [ $j –le $i ]
then
echo –e “$j/c”
echo –e “*/c”
echo –e “$i/c”
echo –e “=/c”
echo –e “$[ $i*$j ]
/c”
fi
done
echo “”
done
until
語句:
until
條件
do
cmd1
cmd2…
done
例:
#!/bin/bash
#1+2+…+100
sum=0
i=1
until [$i –gt 100]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
20、在後台執行命令
如果在命令列後面加上一個&符號,Shell就會在立即返回到提示符下,並在後台並行地執行該命令,而無需等待就可以啟動下一下命令。後台作業在執行時的輸出結果將被送到螢幕。
!變數包含提交給背景最後一項作業的PID,可以用kill -9 $!殺死該後台進程。
jobs命令可以顯示當前在後台中啟動並執行作業。
fg %num可以將num數字指定的作業送到前台執行。如果沒有指定數字,則將最近執行的後台作業送到前台執行。
#!/bin/bash<br />str1="badasealya"<br />str2="badasealy"<br />if [ "$str1" /> "$str2" ]<br />then<br /> echo "Yes"<br />else<br /> echo "No"<br />fi<br />echo "end!"</p><p>#!/bin/bash<br />str1="badasealy"<br />str2="badasealy"<br />if [ "$str1" == "$str2" ]<br />then<br /> echo "Yes"<br />else<br /> echo "No"<br />fi<br />echo "end!"<br />