shell編程學(xué)習(xí)筆記(也許會(huì)不定期更新

最近部門(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. 把命令輸出賦值給變量

參考:https://gxnotes.com/article/30492.html

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ì)有空格嗅义。。篡石。芥喇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凰萨,隨后出現(xiàn)的幾起案子继控,更是在濱河造成了極大的恐慌械馆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異许昨,居然都是意外死亡蕾各,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)尾菇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人囚枪,你說(shuō)我怎么就攤上這事派诬。” “怎么了链沼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵默赂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我括勺,道長(zhǎng)缆八,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任疾捍,我火速辦了婚禮奈辰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乱豆。我一直安慰自己奖恰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布咙鞍。 她就那樣靜靜地躺著房官,像睡著了一般。 火紅的嫁衣襯著肌膚如雪续滋。 梳的紋絲不亂的頭發(fā)上翰守,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音疲酌,去河邊找鬼蜡峰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛朗恳,可吹牛的內(nèi)容都是我干的湿颅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粥诫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼油航!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起怀浆,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谊囚,失蹤者是張志新(化名)和其女友劉穎怕享,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體镰踏,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡函筋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奠伪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跌帐。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绊率,靈堂內(nèi)的尸體忽然破棺而出谨敛,到底是詐尸還是另有隱情,我是刑警寧澤即舌,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布佣盒,位于F島的核電站挎袜,受9級(jí)特大地震影響顽聂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盯仪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一紊搪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧全景,春花似錦耀石、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至炕贵,卻和暖如春梆奈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背称开。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工亩钟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鳖轰。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓清酥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蕴侣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子焰轻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,099評(píng)論 0 0
  • FreeCodeCamp - Basic JavaScript 寫(xiě)在前面: 我曾經(jīng)在進(jìn)谷前刷過(guò)這一套題,不過(guò)當(dāng)時(shí)只...
    付林恒閱讀 16,445評(píng)論 5 28
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法昆雀,類(lèi)相關(guān)的語(yǔ)法辱志,內(nèi)部類(lèi)的語(yǔ)法胧谈,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法荸频,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,639評(píng)論 18 399
  • 有一種心理很卑鄙菱肖。 我不愛(ài)你,但是你既然說(shuō)了愛(ài)我旭从,你就要從一而終稳强,敢中途跑票那就是你不夠?qū)G槟愠核摹?但我可以...
    蘇噼里閱讀 231評(píng)論 2 3
  • 文/新晴 我喜歡退疫,喜歡有這樣一個(gè)人喜歡著我喜歡的,有著我喜歡的心鸽素,做著我喜歡的事褒繁,說(shuō)著我喜歡的話,成為我喜歡的人馍忽。...
    雪霽新晴閱讀 338評(píng)論 0 2