最近部門(mén)考核煞额,考核內(nèi)容是寫(xiě)一個(gè)UML的編譯腳本,雖然并不是很難沾谜,但他不布置這些東西我想我也不會(huì)去學(xué)膊毁,因?yàn)椴恢篮芏鄸|西。基跑。婚温。所以,就算是一個(gè)很水的部門(mén)(不是指一些人的實(shí)力水媳否,而是其他方面-栅螟、-)荆秦,也想爭(zhēng)取留下來(lái)。力图。步绸。不想離一些人越來(lái)越遠(yuǎn)了……
筆記都是摘抄自菜鳥(niǎo)編程
運(yùn)算
1. 關(guān)系運(yùn)算符
關(guān)系運(yùn)算符只支持?jǐn)?shù)字,不支持字符串搪哪,除非字符串的值是數(shù)字靡努。
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
巧記:
NQ 就是 NOT EQUAL不等于
GT 就是 GREATER THAN大于
LT 就是 LESS THAN小于
GE 就是 GREATER THAN OR EQUAL 大于等于
LE 就是 LESS THAN OR EQUAL 小于等于
2. 布爾運(yùn)算符
! | 非運(yùn)算坪圾,表達(dá)式為 true 則返回 false晓折,否則返回 true。 | [ ! false ] 返回 true兽泄。 |
---|---|---|
-o | 或運(yùn)算漓概,有一個(gè)表達(dá)式為 true 則返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true病梢。 |
-a | 與運(yùn)算胃珍,兩個(gè)表達(dá)式都為 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false蜓陌。 |
a=10
b=20
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a != $b: a 等于 b"
fi
3. 邏輯運(yùn)算符
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi
4. test 命令
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '兩個(gè)數(shù)相等觅彰!'
else
echo '兩個(gè)數(shù)不相等!'
fi
注意钮热,之前的比較全都是被[]括起來(lái)了填抬,這里用test替換。
流程控制
1. if
if condition
then
command1
command2
...
commandN
fi
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
if else
if condition
then
command1
command2
...
commandN
else
command
fi
if else-if else
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
2. for循環(huán)
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
for var in item1 item2 ... itemN; do command1; command2… done;
3. while
while condition
do
command
done
4. until 循環(huán)
until condition
do
command
done
5. case
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
6. 跳出循環(huán)
break,continue,esac
#!/bin/bash
while :
do
echo -n "輸入 1 到 5 之間的數(shù)字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你輸入的數(shù)字為 $aNum!"
;;
*) echo "你輸入的數(shù)字不是 1 到 5 之間的! 游戲結(jié)束"
break
;;
esac
done
#!/bin/bash
while :
do
echo -n "輸入 1 到 5 之間的數(shù)字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你輸入的數(shù)字為 $aNum!"
;;
*) echo "你輸入的數(shù)字不是 1 到 5 之間的!"
continue
echo "游戲結(jié)束"
;;
esac
done
函數(shù)
[ function ] funname [()]
{
action;
[return int;]
}
#!/bin/bash
# author:菜鳥(niǎo)教程
# url:www.runoob.com
funWithParam(){
echo "第一個(gè)參數(shù)為 $1 !"
echo "第二個(gè)參數(shù)為 $2 !"
echo "第十個(gè)參數(shù)為 $10 !"
#注意隧期,$10 不能獲取第十個(gè)參數(shù)飒责,獲取第十個(gè)參數(shù)需要${10}。當(dāng)n>=10時(shí)仆潮,需要使用${n}來(lái)獲取參數(shù)宏蛉。
echo "第十個(gè)參數(shù)為 ${10} !"
echo "第十一個(gè)參數(shù)為 ${11} !"
echo "參數(shù)總數(shù)有 $# 個(gè)!"
echo "作為一個(gè)字符串輸出所有參數(shù) $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
輸出:
第一個(gè)參數(shù)為 1 !
第二個(gè)參數(shù)為 2 !
第十個(gè)參數(shù)為 10 !
第十個(gè)參數(shù)為 34 !
第十一個(gè)參數(shù)為 73 !
參數(shù)總數(shù)有 11 個(gè)!
作為一個(gè)字符串輸出所有參數(shù) 1 2 3 4 5 6 7 8 9 34 73 !
遇到的賊坑
1. 把命令輸出賦值給變量
pwd=`pwd`
pwd=$(pwd)
等號(hào)后面絕對(duì)絕對(duì)不能有空格!
2. if判斷格式
a=1
b=2
if [ $a < $b ]
then
echo "hhh"
fi
我的天性置,這個(gè)格式比python還奇葩拾并。if判斷的[]里面,變量和比較符絕對(duì)要空格隔開(kāi)鹏浅,和方框左右兩邊也絕對(duì)有空格嗅义。。篡石。芥喇。