shell程式設計
shell特殊字元-引号
◦1.雙引号 由雙引号括起來的字元(除$、倒引号(`)和反斜線(\)外) 均作為普通字元對待。
◦2.單引号 由單引号括起來的字元全都作為普通字元出現
◦3.倒引号 倒引号括起來的字元串被shell解釋為指令行,在執行時,shell 會先執行該指令行,并以它的标準輸出結果取代整個倒引号部 分。 倒引号還可以嵌套使用。但應注意,嵌套使用時内層的倒引号 必須用反斜線(\)将其轉義。
‘’别名
alias 起别名
unalias 取消别名
shell特殊字元-通配符
◦1.一般通配符
:1*(星号),它比對任意字元的0次或多次出現,f*可以比對 f,fa,f1,fa2,ffa.s
2?(問号),它比對任意一個字元,f?可以比對f1,fa,fb,不能比對 fabc,f12
3[ ](一對方括号),其中有一個字元組。其作用是比對該字元 組所限定的任何一個字元. f[abcd]可以比對fa,fb,fc,fd,不能比對 f1,fa1,fab等,也可寫作f[a-d].
4 !(驚歎号),如果它緊跟在一對方括号的左方括号([)之後, 則表示不在一對方括号中所列出的字元f[!1-9].c表示以f開頭, 後面一個字元不是數字1-9的.c檔案名。
shell特殊字元-注釋、管道線 和背景指令
◦1.注釋 #!/bin/bash
2.管道線 ls-l $HOME | wc–l
3.背景指令 $ gcc m1.c&
shell特殊字元-輸入/輸出重 定向符
◦ 自動打開三個标準檔案,即标準輸入檔案(stdin),标準輸出檔案(stdout)和标準錯誤輸出檔案(stderr)。
◦1.輸入重定向符 一般形式是:指令 < 檔案名 如:$ score < file1
◦2.輸出重定向符 一般形式是:指令 > 檔案名 如:$ who > abc
◦3.輸出附加定向符 一般形式是:指令>>檔案名 如:$ ps-l >> psfile
輸入/輸出指令 ◦
1.read指令
2. echo指令
環境變量 ◦1.常用的環境變量
HOME:使用者主目錄的全路徑名
LOGNAME:即你的注冊名,由Linux自動設定
MAIL: 你的系統信箱的路徑
PATH: shell從中查找指令的目錄清單。可以設定它, 如:PATH=HOME/bin PS1:shell的主提示符。 bash預設的主提示符一般為“\s-\v$ ”。其中,\s表示shell的名稱; \v表示bash的版本号 PS1="Enter Command> "
PWD:你目前工作目錄的路徑
SHELL:你目前使用的shell
TERM: 你的終端類型
.删除環境變量 $ unset NAME
.export語句
利用export指令将這些變量輸出,使它們成為公用量
set指令
⑴ 顯示迄今為止所定義的全部變量,包括局部量和公用量;
⑵ 用來設定位置參數的值;
⑶ 改變執行shell腳本時的選項設定,可以使使用者改變shell的功能。
◦bash中算術運算的使用
控制結構-if語句
if 測試條件
then 指令1
elif 指令2
then 指令3
else 指令4
fi
有關檔案方面的測試
-e filename 如果 filename存在,則為真
-L filename 如果 filename為符号連結,則為真
-r 檔案名 若檔案存在并且是使用者可讀的,則測試條件為真
-w 檔案名 若檔案存在并且是使用者可寫的,則測試條件為真
-x 檔案名 若檔案存在并且是使用者可執行的,則測試條件為真
-f 檔案名 若檔案存在并且是普通檔案,則測試條件為真
-d 檔案名 若檔案存在并且是目錄檔案,則測試條件為真
有關數值方面的測試
n1 -eq n2 如果整數n1等于n2,則測試條件為真
n1 -ne n2 如果整數n1不等于n2,則測試條件為真
n1 -lt n2 如果n1小于n2,則測試條件為真
n1 -le n2 如果n1小于或等于n2,則測試條件為真
n1 -gt n2 如果n1大于n2,則測試條件為真
n1 -ge n2 如果n1大于或等于n2,則測試條件為真
邏輯運算符
! 邏輯非( NOT
-a 邏輯與( AND )
-o 邏輯或( OR )
控制結構-case語句
在使用case語句時應注意: ⑴ 每個模式字元串後面可有一條或多條指令,其最後一條指令必須以兩 個分号(即;;)結束。
case $1 in
-b) count=grep^b $2|wc -l echo “The number of lines in $2 that start with b is $count.”;;
-s) count=grep^s $2|wc -l echo “The number of lines in $2 that start with s is $count.”;;
*) echo “That option is not recognized”;;
esac
控制結構-while語句
while [ $1 ]
do
if [ -f $1 ]
then echo “display: $1”
cat $1
else echo “$1 is not a file name.”
fi
shift
done
控制結構-until語句
它與while語句很相似,隻是測試條件不同:當測試條件為假時,才進入循 環體,直至測試條件為真時終止循環。
until [ “$2”= “ ” ]
do
cp $1 $2
shift 2
done
if [ “$1”!=“ ” ]
then echo “bad argument!”
fi
控制結構-for語句
其使用方式主要有兩種: 一種是值表方式 另一種是算術表達式方式
1.值表方式
for 變量 [ in 值表 ];do 指令表;done
例:
for day in Monday Wednesday Friday Sunday
do
echo $day
done
2.算術表達式方式
for ((e1;e2;e3))
do
指令表
done
break continue exit
作業控制
jobs,kill,bg,fg和wait
$ jobs
[2] +Done who|wc-cd
[1] -Stopped(SIGTTOU) man ls&