shell腳本基礎

程序是由指令加數據組成

編程風格分為過程式和對象時

過程式:以指令為中心,數據服務于指令,適合小型程序

對象式:以數據為中心,指令服務于數據,社和大型程序

高級語言的執行方式分為編譯型和解釋型

編譯型:先將高級語言通過編譯器編譯成二進制代碼再執行

解釋型:程序編寫完成后不轉換成二進制代碼,在使用時才通過解釋器解釋運行,不生成二進制程序

shell就是一種解釋器

程序的執行分為順序執行,循環執行,條件執行

bash –n:檢測腳本語法錯誤

bash –x:對腳本進行調試執行

PATH:默認不包括當前目錄,要想直接執行腳本,除了要有執行權限,目錄權限外還要寫路徑或將腳本所在路徑加入PATH中

設置變量時使用  變量名=變量內容

注意:變量內容默認是字符型,變量內容有空格要用雙引號引起來,變量名第一位不能是數字

刪除變量時使用后  unset 變量名

bash是弱類型,變量無需事先定義,默認為字符型,參與運算時會自動進行隱式轉換,不支持浮點式

變量命名規則:

不能使用程序保留字,如if,for等

只能使用字母,數字,下劃線,不能數字開頭

見命知意

統一命名規則

小駝峰:第一個單詞首字母小寫,其余首字母大寫

大駝峰:所有單詞首字母大寫

set命令可以查詢所有變量  env可以查詢所有環境變量

各種變量范圍

本地變量:對當前shell進程有效,對其他shell或當前shell子shell無效

環境變量:對當前shell及子shell有效

局部變量:對當前shell某片斷有效

位置變量:$1,$2…..讓腳本可以在代碼中調用命令行中的參數

特殊變量:

$#:傳遞給腳本的參數個數

$1:傳遞給腳本的第一個參數

$@:傳遞給腳本的所有參數

$*:傳遞給腳本的所有參數(與$@相比,在加””情況下$*是把所有參數作為一個整體,$@是把每一個參數都單獨列出來)

$?:上調命令執行結果

注:$10會被系統識別為$1   0

引用變量時要加$或者${}

定義環境變量可以使用export 或者declear –x

環境變量可以在定義時就聲明或在定義普通變量后再進行聲明

只讀變量可以使用readonly 或者 declear –r

短路與:  第一個為0,后面不用繼續運行  第一個為1,第二個必須要參與運算; 

短路或:  第一個為1,后面不用繼續運行  第一個為0,第二個必須要參與運算;  ?

異或:^  異或的兩個值,相同為假,不同為真

實現算術運算: 

1. let var=算術表達式

2.var=$[算術表達式] 

3.var=$((算術表達式)) 

4.var=$(expr arg1 arg2 arg3 …) 

5. declare –i var = 數值 

6. echo ‘算術表達式’ | bc

bash中的測試指令 test或 []或[[]]

數值比較:

gt:大于

ge:大于等于

lt:小于

le:小于等于

eq:等于

ne:不等于

字符串比較:

==:等于

!=:不等于

=~:前面的字符串能被后面的表達式所匹配(一般用在[[]]中)

>:大于

<:小于(<>比較的是字符的ascii碼)

-z:字符串是否為空

-n:字符串是否為非空

存在性及類別測試

-e:文件是否存在

-b:文件是否為塊設備文件

-c:文件是否為字符設備文件

-d:文件是否為目錄文件

-f:文件是否為普通文件(包括了鏈接文件)

-p:文件是否為管道文件

-h/-L:文件是否為符號鏈接文件

-S:文件是否為套接字文件

-s:文件是是否存在且非空

-O:當前用戶是否為該文件屬主

-G:當前用戶是否為該文件屬組

-N:文件自上一次被讀取后是否被修改過

雙目測試:

#1-ef #2:兩個文件是否指向同一個inode

#1-nt #2:文件1是否新與文件2

#1-ot #2: 文件1是否舊與文件2

組和測試

&&:并且

||:或者

?。悍?/p>

#1&&#2 = [  #1 –a #2  ]

#1||#2 = [  #1 –o #2  ]

注:正則表達式需要寫在[[]]中,而-a,-o則不支持[[]]

使用bash運行腳本相當于打開一個子shell運行

.或source相當于在當前shell運行命令

if語句使用方式

單分支:

if 判斷條件;then

代碼

else

代碼

fi

多分支:

if 判斷條件;then

代碼

elif判斷條件;then

代碼

……

else

代碼

fi

 

raad命令可以實現交互式輸入變量

read –p:可以輸出提示信息并接受變量

read –t:指定命令輸入時間

case命令用法(case支持glob通配符):

case $變量 in 

判斷條件)

分支1

;;

判斷條件)

分支2

;;

……….

*)

默認分支

;;

esac

循環執行:將代碼重復運行多次

for循環用法(比較適合數字)

for 變量名 in 列表;do

循環體

done

依次將列表中元素賦給變量,每次賦值后就執行循環體,知道列表中元素耗盡

列表生成方法:

1、直接給出

2、整數列表   {start…end}   $seq [start  end]

3、返回到列表的命令

4、使用通配符

5、變量引用

while循環用法

while 條件;do

循環體

done

進入循環前要先判斷條件是否成立,每次循環后再次進行判斷,直到條件不滿足為止

判斷條件中一般應有循環控制變量,該變量會隨著循環體進行而修正

until循環用法

until 條件;do

循環體

done

進入循環前要先判斷條件是否成立,不成立進入循環,成立則跳過

break:退出當前循環

exit:退出當前shell

continue:結束當次循環,繼續下次循環

原創文章,作者:zzzzz1357x1,如若轉載,請注明出處:http://www.www58058.com/36831

(0)
zzzzz1357x1zzzzz1357x1
上一篇 2016-08-18 10:10
下一篇 2016-08-18 10:10

相關推薦

  • linux命令簡單應用

    創建/tmp目錄下的:a_c, a_d, b_c, b_d touch /tmp/{a,b}_{c,d} [root@bogon ~]# tree /tmp /tmp |– a_c |– a_d |– b_c |– b_d 創建/tmp/mylinux目錄下的: mylinux/ ├── bin ├── boo…

    Linux干貨 2016-11-06
  • echo命令使用詳解

        echo命令用于在shell中打印shell變量的值,或者直接輸出指定的字符串。linux的echo命令,在shell編程中極為常用,在終端下打印變量的時候也是常常用到的,因此有必要了解下echo的用法。 語法: ? 語法: echo [-neE][字符串]   命令選項:   &…

    Linux干貨 2016-08-22
  • Linux學習小結 1

    一、描述計算機的組成及其功能 計算機由硬件和軟件組成: 1、硬件組成又分為: 中央處理器(CPU):功能主要是解釋計算機指令以及處理計算機軟件中的數據, 中央處理器主要包括運算器(算術邏輯運算單元,ALU,Arithmetic Logic Unit)和高速緩沖存儲器(Cache)及實現它們之間聯系的數據(Data)、控制及狀態的總線(Bus)內部存儲器(Me…

    Linux干貨 2017-06-27
  • yum與rpm生產中最頻繁使用

    yum 命令 使用方法: yum [選項] [包名稱] 常用選項: install #安裝軟件,后面跟包名稱,例如:yum install wget 安裝wget軟件包list #列出所有軟件,一般和grep一起使用,例如:yum list | grep java ,查看所有java安裝包,一般情況下不使用search,grep可以更大范圍搜索包,例如只記得…

    Linux干貨 2017-04-18
  • Linux-文件系統掛載:mount的用法

     文件系統掛載  本章詳細介紹文件系統掛載、卸載(mount,umount);  如何通過mount命令掛載使用文件系統、掛載常用參數、以及開機自動掛載(/etc/fstab)。    掛載描述:             掛載:將額外文件系…

    2017-06-19
  • 文本處理工具命令使用以及文件權限管理

    一 sort uniq wc cut tr 等文本處理工具的基本用法 1. 通過who命令查看當前登錄了哪些用戶,并通過uniq或sort -u命令將重復的行只顯示一次 [root@Linuxprobe ~]# who | cut -d’ ‘ -f1 | sort -u 目前查看系統有兩個用戶登錄 harrycai root [root@Linuxprobe…

    Linux干貨 2017-08-13

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 09:26

    腳本語法需要總結好,更重要的是多寫多練,作業需要好好完成呢

欧美性久久久久