bash基礎,gitbash

來源:互聯網
上載者:User

bash基礎,gitbash

 

1           概念

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,expr

1)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))

 

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/continue

 

3           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分支】

var=12

case "$var" in

[a-z] ) echo 'lowercase 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迴圈

變數的作用:整數,字串,計數,檔案屬性

 

 

次元立方

 


[bash]$ 什意思?

就是個提示符,bash是shell指令碼中得一種。linux中,$代碼普通使用者,#代表root使用者。
都是linux基礎,學學吧。
 
對於Linux ,Bash ,Shell的概念問題

1.是
2.區別大,你會寫bash shell不代表你會寫c shell,不過我覺得你會寫一個shell指令碼
另一種你上手也很快,起碼讀懂應該問題不大。你可以先學bash shell因為用的比較多
而且可移植性強,bash 是shell的一種。
3.屬於shell,只安裝了bash shell就可以運行bash shell指令碼,並不是針對某個系統或者發行版本。
shell這種東西可以隨意安裝的。你用習慣哪個shell,就算初裝系統裡沒有,你也可以單獨安裝一個
4.給你推薦兩本書
《Bash shell進階指令碼指南》
《實戰LINUX+SHELL編程與伺服器管》

shell編程,可以說直接反應出你對linux命令掌握的熟練度問題,什麼情況下用哪種命令更符合
你的工作需求,怎麼簡化指令碼運行過程,最佳化指令碼讓它更有效率。
你在學習過程中必然會接觸到sed,awk這種流編輯器。然後你還得學習sed,awk。
漸漸地估計你就該選擇一門更強大的程式設計語言,而不僅限於寫shell指令碼,比如選perl.python,php.
C,或者什麼語言...基本上都是這個過程。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.