《Linux就該這麼學》第五節課,Shell命令腳本的學習

4.2 編寫Shell腳本html

   Shell腳本命令分爲兩種,一是交互式,二是批處理式。linux

   查看SHELL變量來查看當前系統的終端解釋器是什麼。shell

[root@linuxprobe Desktop]# echo  $SHELL  $SHELL提取SHELL的變量值數據庫

/bin/bash                  bash表示系統是bash翻譯器      vim

[root@linuxprobe Desktop]#  緩存

1.腳本的結構:bash

 S1:建立一個腳本文件.sh,例如 Examp.sh網絡

          vim Examp.sh架構

  S2 #!/bin/bash  (腳本聲明)。 必須寫,告訴系統終端使用哪一種shell解釋器來執行次腳本。less

  S3:  #字符串 (腳本註釋)。能夠沒有也能夠有不少內容,對腳本的功能及某些參數進行說明。

 S4:命令。能夠上下行進行疊加。

[root@linuxprobe Desktop]# vim EXamp.sh       在編輯器裏寫入                      

                                                #!/bin/bash

                                                # lizi

                                                   pwd

                                                   ls  -al

 

 [root@linuxprobe Desktop]# cat EXamp.sh

  #!/bin/bash

  # lizi

     pwd

     ls  -al

[root@linuxprobe Desktop]# bash EXamp.sh     在終端中運行

/root/Desktop

total 120

drwxr-xr-x.  3 root root  4096 Feb 22 09:25 .

dr-xr-x---. 14 root root  4096 Feb 22 09:25 ..

-rw-r--r--.  1 root root 20480 Feb 22 03:53 .1111.swo

-rw-r--r--.  1 root root 20480 Feb 22 03:52 .1111.swp

2.用戶的參數

一個腳本分兩步走,先接受用戶的參數,而後對用戶的參數進行判斷 

   2.1接收用戶參數

      參數與參數之間用空格間隔。

     $ :參數提取符,把後面變量的參數提取出來。

     $0: 提取當前腳本的名稱

     $*: 提取全部變量的參數

     $#: 統計一共有多少個參數

     $?:上一個命令執行結果的返回值,0或者非0

     $1,3,5: 提取第一,三,五個參數  

 [root@linuxprobe Desktop]# vim EXamp.sh

 [root@linuxprobe Desktop]# cat EXamp.sh

  #!/bin/bash

  # lizi

  echo "$0"

  echo "$#,$*"

  echo "$ 1,3,5"

[root@linuxprobe Desktop]# bash EXamp.sh a b c d e f

EXamp.sh

6,a b c d e f

$ 1,3,5

 

2.2判斷用戶的參數

    系統在執行命令時會判斷用戶輸入的信息是否正確合理,例如在運行mkdir命令建立空白目錄時,要判斷這個目錄是否已經存在,若是存在那就會報錯,不存在就會執行命令。

 

 

[root@linuxprobe Desktop]# ls

]  123~  1a1~  2a1~  A~  AbbA~  DD~  EXamp.sh  haha~  linux

[root@linuxprobe Desktop]# mkdir linux

mkdir: cannot create directory ‘linux’: File exists  報錯目錄已存在

[root@linuxprobe Desktop]# mkdir linux1

[root@linuxprobe Desktop]# ls

]  123~  1a1~  2a1~  A~  AbbA~  DD~  EXamp.sh  haha~  

linux  linux1                            linux1不存在就自動建立

 

 

     Shell腳本中的條件測試語法能夠來判斷條件表達式是否成立,若成立則返回數字0,不然返回非0數字。

     按照測試對象來劃分。條件測試語句分爲4中:

      1.文件測試語句      

      2.邏輯測試語句

      3.整數值比較語句

      4.字符串比較語句

       第4章 Vim編輯器與Shell命令腳本。第4章 Vim編輯器與Shell命令腳本。

    2.2.1文件測試語句:判斷文件是否存在或權限是否知足等

     [ -d 文件A ]  判斷文件A是否爲目錄類型

     [ -f 文件A ]  判斷文件A是爲通常文件

     [ -e 文件A ]  判斷文件A是否存在

     [ -r 文件A ]  測試當前用戶是否有權限讀取

     [ -w 文件A ]  測試當前用戶是否有權限寫入

     [ -x 文件A ]  測試當前用戶是否有權限執行

 

 

[root@linuxp Desktop]# pwd

/root/Desktop

[root@linux Desktop]# ls

]  123~  2a1~  A  A~  AbbA~  DD~  EXamp.sh  haha~  linux  linux1'

[root@linux Desktop]# [ -f /root/Desktop/A ]    -f判斷A是否存在

[root@linux Desktop]# echo "$?"                      

      0                         $?提取上次命令返回值爲0,命令語句成立

[root@linux Desktop]# [ -f /root/Desktop/linux ]

[root@linux Desktop]# echo "$?"      $?提取上次命令返回值爲非0,說明  

      1                                linux不是通常文件

[root@linux Desktop]# [ -d /root/Desktop/linux ]

[root@linux Desktop]# echo "$?"   返回值爲說明linux爲目錄類型

 

這個判斷語句顯得特別沒效率,能夠經過邏輯操做符簡化成一條語句

橢圓形標註: 這個判斷語句顯得特別沒效率,能夠經過邏輯操做符簡化成一條語句      0

 

 [root@linux Desktop]#

 

2.2.2邏輯測試語句:

 

[root@linux Desktop]# [ -f/root/Desktop/A ]

[root@linux Desktop]# echo "$?"

     0

    

  

 

   三個重要的邏輯操做符:

   1邏輯與 && :表示當前面的命令執行成功後再執行後面的命令

       命令A  &&  命令B   

   2邏輯或 || :當前面的命令執行失敗時執行後面的命令

      命令A   ||  命令B

   3邏輯非 !非:表示取命令執行結果的相反值,取反值

 

[root@linux Desktop]# [ -e A ] && echo "Exist" || echo "NOexist"

      Exist

[root@linux Desktop]# [ -e 1A ] && echo "Exist" || echo "NOexist"

     NOexist

[root@linuxDesktop]#   文件A存在,[ ! -e A ]取反值表示失敗,執行||

[root@linuxprobe Desktop]# [ ! -e A ] && echo "NOexsit" || echo "Exsit"

    Exsit

[root@linuxprobe Desktop]# [ ! -e 1A ] && echo "NOexsit" || echo "Exsit"

    NOexsit

 

[root@linux Desktop]# [ -e A ] && echo "Exist" || echo "NOexist"

      Exist

[root@linux Desktop]# [ -e 1A ] && echo "Exist" || echo "NOexist"

     NOexist

[root@linuxDeskt

 

 

 

2.2.3整數比較

   -eq:   是否等於 equal

   -gt:   是否大於 greater then

   -lt:    是否小於 less then

   -ge;    是否大於等於

   -le:    是否小於等於

本書是由全國多名紅帽架構師(RHCA)基於最新Linux系統共同編寫的高質量Linux技術自學教程,極其適合用於Linux技術入門教程或講課輔助教材,目前是國內最值得去讀的Linux教材,也是最有價值的Linux實驗手冊。章節包括有:

第0章 我們先來談談學習方法和紅帽系統。

第1章 部署虛擬環境安裝linux系統。

第2章 新手必須掌握的Linux命令。

第3章 管道符、重定向與環境變量。

第4章 Vim編輯器與Shell命令腳本。

第5章 用戶身份與文件權限。

第6章 存儲結構與磁盤劃分。

第7章 使用RAID與LVM磁盤陣列技術。

第8章 Iptables與Firewalld防火牆。

第9章 使用ssh服務管理遠程主機。

第10章 使用Apache服務部署靜態網站。

第11章 使用Vsftpd服務傳輸文件。

第12章 使用Samba或NFS實現文件共享。

第13章 使用Bind提供域名解析服務。

第14章 使用DHCP動態管理主機地址。

第15章 使用Postfix與Dovecot部署郵件系統

第16章 使用Squid部署代理緩存服務。

第17章 使用iSCSI服務部署網絡存儲。

第18章 使用MariaDB數據庫管理系統。

第19章 使用PXE+Kickstart部署無人值守安裝。

第20章 使用LNMP架構部署動態網站環境。

對Linux感興趣的必定要加個收藏,在線學習網址是https://www.linuxprobe.com/chapter-00.html

附件:

Linux入門教程https://www.linuxprobe.com/docs/LinuxProbe.pdf

Linux命令大全https://www.linuxcool.com/

相關文章
相關標籤/搜索