bash(sh,pdsh擴充): GNU Bourne-Again Shell
sh:Bourne Shell,編程優秀,用戶交互不便。
csh:C Shell,編程接口不如sh,用戶界面友好,與C語言語法相似。 ——>tcsh
ksh:Korn Shell,集成了sh和csh的優點,并完全兼容sh。 ——>pdsh(Public Domain Korn Shell)
zsh
2 語法2.1 變量,數據類型變量定義:不含保留字(例如“-,*”等),不含空格。
變量的引用:賦值,for循環前不需帶$;其他情況引用變量需要帶"$"(例如,打印,運算等)。
數據類型:shell變量沒有數據類型。
shell語句:=左右不能有空格;shell語句不以”;“結尾。
2.1.1 整數運算(+-*/%):let,exPR1)let:雙引號
例如,let "x=$x+1"
2)expr:`,空格,特殊字符前需要使用轉義符號/
例如,x=`expr $x + 4`,x=`expr $x /* 4`
【PS】不能進行浮點數運算,沒有浮點數數據類型。
【例子:算術運算,字符拼接,shell的無數據類型】
#!/bin/bash
x=2007
let "x=$x+1"
echo $x
x=`expr $x + 4`
echo $x
echo $(expr $x / 2)
x='Olmpic'$x
echo x=$x
y=12
y=`expr $y /* 2`
echo $y
2.1.2 賦值x=200
let "x=$x+1"
x=’hello’$x
y=$(expr $x / 2)
y=`expr $y /* 2`
result=$(($result+$num))
num=$((num+1))
#result=1
num=1
result=$(($result+$num))
#num=$((num+1))
#echo $result
echo $(($a+1))
#echo $num
echo 'aaa'+$x
echo $((-123))
echo $(($z))
2.1.3 比較操作1)-eq,-ne,-gt和-ge,-lt和-le,-z(為空),-n(非空)
2)=,!=,>(無>=),<(無<=)
【PS】
字符串比較時,盡量不用-z,而用!-n代替。
能用1)盡量不用2)。
2.1.4 按位操作&,|
【位運算:】
ckm@bidc:~/zzhTest> echo $(expr 1 /& 0)
0
ckm@bidc:~/zzhTest> echo $(expr 1 /| 0)
1
#!/bibn/bash
if [ $str !-n ];then
echo null!!
fi
2.2 流程控制2.2.1 if條件控制if [ expression ] ;then statements
fi
if [ expression ] ;then statements
else statements
fi
if [ expression ] ;then statements
else if [ expression ] then statements
else statements
fi
if [ expression ] ;then statements
elif [ expression ] ;then statements
else statements
fi
【PS】
若then換行,則then前無需加;。
[和]的后、前有空格。
2.2.2 case分支結構case "$var" in
cindition1 ) statements;;
cindition2 ) statements;;
...
* ) statements;;
esac
2.2.3 for循環for var in [ list ];do
statements
done
【PS】
var 變量的引用不使用$。
<list>的元素用空格分隔。
2.2.4 while循環while [ condition ]
do
statements
done
2.2.5 until循環until [ condition ]
do
statements
done
2.2.6 break/continue3 bash腳本例子【hello world】腳本的執行:hello#!/bin/bash
#變量的使用
str='hello world'
echo $str
echo str
--執行文件
bash hello
sh hello
chmod u+x hello
hello
【linux常用命令】vi zzhdir
#!/bin/bash
ls –a
--執行
sh zzhdir
【局部變量:局部變量的作用域(函數體內)】#!/bin/bash
function test {
local var=world
echo $var
}
var=hello
echo $var
test
echo $var
【PS】局部變量:首次被賦值時,變量前面加上local。
【if條件:比較操作,if條件控制結構】#!/bin/bash
a=10
if [ $a -gt 0 ]
then echo 1
else echo 2
fi
【if條件:帶參腳本】#!/bin/bash
if [ $1 = 10 ];then echo right!
else echo wrong!
fi
--執行
sh test 123
【PS】$1用于匹配命令行的第1個參數。(bash中的保留字)
【case分支】寫法一:
export LC_ALL=C /*區分大小寫*/
var=A
case "$var" in
[a-z] ) echo 'lowercase letter!';;
[A-Z] ) echo 'lowercase letter!';;
[0-9] ) echo 'number';;
* ) echo other character!;;
Esac
寫法二:
var=A
case "$var" in
[[:lower]] ) echo 'lowercase letter!';;
[[:upper]] ) echo 'upper letter!';;
[0-9] ) echo 'number';;
* ) echo other character!;;
esac
【for循環:無in [list]】
for var ;do
echo ok
done
--執行
sh test
sh test 1 "hello world" a
【for循環:i的作用域】循環體內部(do/done之間)for i in $(seq 5)
do
echo $i
done
echo $i
--執行
sh test
【for循環:seq】for i in `seq 1 5`;do
echo TEST!
done
【for循環:i的作用域】定義后的程序塊for((i=1;i<=5;i++));do
echo $i
done
echo $i
--執行
sh test
【for循環:命令行參數】。for param
do
echo $param
done
--執行腳本
sh test 123 456 789
【PS】未指定list,將打印所有命令行參數;當沒有命令行參數時,什么都不打印
【while循環】num=1
result=0
while [ $num -le 3 ]
do
result=$(($result+$num))
num=$((num+1))
done
echo $result
【until循環】num=1
result=0
until [ $num -ge 3 ]
do
result=$(($result+$num))
num=$((num+1))
done
echo $result
【break/continue】for i in `seq 1 5`;do
if [ $i = 3 ];the
continue
else echo $i
fi
done
4 Vi編輯器命名模式:Esc鍵,“:”英文冒號,“wq”保存退出,“q!”強制退出
插入模式:aAiIuU
刪除單詞:dw
刪除整行:dd
字符串查找:“/”正斜杠
5 相關拓展保留字
正則
函數
輸入,輸出: >,>>,2>,1>,>&
For循環
變量的作用:整數,字符串,計數,文件屬性
次元立方
新聞熱點
疑難解答