bash(sh,pdsh擴充): GNU Bourne-Again Shellshell
sh:Bourne Shell,編程優秀,用戶交互不便。 express
csh:C Shell,編程接口不如sh,用戶界面友好,與C語言語法類似。 ——>tcsh編程
ksh:Korn Shell,集成了sh和csh的優勢,並徹底兼容sh。 ——>pdsh(Public Domain Korn Shell)bash
zsh編輯器
變量定義:不含保留字(例如「-,*」等),不含空格。函數
變量的引用:賦值,for循環前不需帶$;其餘狀況引用變量須要帶"$"(例如,打印,運算等)。spa
數據類型:shell變量沒有數據類型。命令行
shell語句:=左右不能有空格;shell語句不以」;「結尾。接口
1)let:雙引號ci
例如,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
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))
1)-eq,-ne,-gt和-ge,-lt和-le,-z(爲空),-n(非空)
2)=,!=,>(無>=),<(無<=)
【PS】
字符串比較時,儘可能不用-z,而用!-n代替。
能用1)儘可能不用2)。
&,|
【位運算:】
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
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前無需加;。
[和]的後、前有空格。
case "$var" in
cindition1 ) statements;;
cindition2 ) statements;;
...
* ) statements;;
esac
for var in [ list ];do
statements
done
【PS】
var 變量的引用不使用$。
<list>的元素用空格分隔。
while [ condition ]
do
statements
done
until [ condition ]
do
statements
done
#!/bin/bash
#變量的使用
str='hello world'
echo $str
echo str
--執行文件
bash hello
sh hello
chmod u+x hello
hello
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。
#!/bin/bash
a=10
if [ $a -gt 0 ]
then echo 1
else echo 2
fi
#!/bin/bash
if [ $1 = 10 ];then echo right!
else echo wrong!
fi
--執行
sh test 123
【PS】$1用於匹配命令行的第1個參數。(bash中的保留字)
寫法一:
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 in $(seq 5)
do
echo $i
done
echo $i
--執行
sh test
for i in `seq 1 5`;do
echo TEST!
done
for((i=1;i<=5;i++));do
echo $i
done
echo $i
--執行
sh test
for param
do
echo $param
done
--執行腳本
sh test 123 456 789
【PS】未指定list,將打印全部命令行參數;當沒有命令行參數時,什麼都不打印
num=1
result=0
while [ $num -le 3 ]
do
result=$(($result+$num))
num=$((num+1))
done
echo $result
num=1
result=0
until [ $num -ge 3 ]
do
result=$(($result+$num))
num=$((num+1))
done
echo $result
for i in `seq 1 5`;do
if [ $i = 3 ];the
continue
else echo $i
fi
done
命名模式:Esc鍵,「:」英文冒號,「wq」保存退出,「q!」強制退出
插入模式:aAiIuU
刪除單詞:dw
刪除整行:dd
字符串查找:「/」正斜槓
保留字
正則
函數
輸入,輸出: >,>>,2>,1>,>&
For循環
變量的做用:整數,字符串,計數,文件屬性
次元立方