shell腳本編程進階

一些常用的編程語句,

過程式編程語言通常分為三種執行方式,分別是

順序執行

選擇執行

循環執行

一、選擇執行語句

1)if語句

選擇執行:if語句可以是單分支選擇,也可以雙分支分支選擇,還可以多分支選擇。而且if語句可嵌套,

單分支

if 判斷條件;then

? ?條件為真的分支

fi

根據判斷條件選擇是否執行下面的分支,如果符合條件,則執行;若不符合,則跳過。

雙分支

if 判斷條件;then

條件為真的分支1

else

條件為假的分支2

fi

根據判斷條件選擇是否執行下面的分支,如果符合條件,則執行分支1;若不符合,則執行分支2。

多分支

if 判斷條件1;then

條件為真的分支

elif 判斷條件2;then

條件為真的分支

elif 判斷條件3;then

條件為真的分支

else

以上條件均不符合的分支

fi

根據判斷條件進行判斷,當判斷條件為真時,執行當前環境下的分支;若判斷條件都不符合,則執行最后一個分支

if語句作為選擇執行語句經常用于條件判斷的情況,可根據不同的條件設計多個分支進行判斷。

例題; 編寫腳本/root/bin/createuser.sh,實現如下功能:使用一個用戶名做為參數,如果指定參數的用戶存在,就顯示其存在,否則添加之;顯示添加的用戶的id號等信息?。

根據if語句編寫了如下腳本

if1

這是一個雙分支的if判斷語句,利用”id $name”的執行結果來進行判斷,如果$?等于0,則說明該用戶已創立,執行”echo”命令;若$?不等于0,則說明該用戶未創立,則執行”useradd”命令。

執行該腳本,首先輸入已存在的用戶”zhao”,然后輸入為創建的用戶”yjj”,顯示兩種不同的結果。if2

2)case語句

case語句用于多分支的情況,根據變量匹配對應的分支來執行。

case語句格式

case 變量引用 in

par1)

執行分支1

? ? ;;

pat2)

執行分支2

? ? ;;

……

*)

執行分支

? ?;;

seac

case語句支持通配符寫法。

例題: 編寫腳本/root/bin/yesorno.sh,提示用戶輸入yesno,并不區分大小寫

case11

case語句支持通配符寫法,對變量”ans”進行匹配,當”ans”匹配到無論大寫還是小寫的”yes””no”都會顯示對應的分支,當匹配不到時,就會執行最后的默認分支。

case2

case3

二、循環執行語句

循環執行即將某段代碼執行多次,有的語句循環次數已知,即可指定循環多少次;還有循環次數未知的語句,根據進入循環和退出循環的條件來開始或退出循環。

1)for語句

基本格式

for ?變量名 in 列表;do?

? ? 循環體

done

通過列表給變量賦值,執行一次循環,當列表內數值用完,結束循環。

列表可通過以下方式生成

1)直接給出

在”in”后直接列出要循環的數值

2)數列

通過{start..end}表示一個集合作為列表

3)用命令生成列表

例如”ls ~root/”命令可顯示root家錄下文件名。

4)通配符生成列表

例如”*.sh”可顯示”sh”后綴文件作為循環列表

5)還可使用變量作為列表

例題: 編寫腳本,提示輸入正整數n的值,計算1+2+…+n的總和

for1

用”seq”列出1到n的值,循環相加從1加到n,最后輸出結果

for2

2)white語句

3)until語句

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90489

(2)
yoyiccccyoyicccc
上一篇 2017-12-23 17:25
下一篇 2017-12-23 19:06

相關推薦

  • shell編程循環語法作業

    判斷/var/目錄下所有文件的類型 [root@www sh.log]# cat typefile.sh  #!/bin/bash #author:DYW #顯示目錄下文件類型 if [ $# -lt 1 ];then echo "Please&nb…

    Linux干貨 2016-08-21
  • Linux下的查找命令

           Linux下的查找命令有很多,常用的有grep、which、whereis、locate、find。使用linux系統難免會忘記文件所在的位置,小編就是如此。所以我們在文件系統上常常需要根據文件的各種屬性去查找符合條件的文件,所以小編今天特意寫一篇文章來介紹一下這幾個常用的查找命令。 一、Gre…

    Linux干貨 2017-08-13
  • Google 開源技術protobuf

    1.  Protobuf簡介        protobuf是google提供的一個開源序列化框架,類似于XML,JSON這樣的數據表示語言,其最大的特點是基于二進制,因此比傳統的XML表示高效短小得多。雖然是二進制數據格式,但并沒有因此變得復雜,開發人員通過按照一定的語法定義結構化的消息格式,然后送給命令行…

    系統運維 2015-04-04
  • 磁盤分區相關知識

    磁盤分區相關知識 使用磁盤分區的過程設備識別→設備分區→創建文件系統→標記文件系統→在/etc/fstab文件中創建條目→掛載新的文件系統 分區不是必須的,但是分區是必要的:優化I/O性能實現磁盤空間配額限制提高修復速度隔離系統和程序安裝多個OS采用不同文件系統 不重啟激活新添加的磁盤:echo “- – -” > …

    Linux干貨 2017-08-20
  • 第七周

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; 第一步先在磁盤上創建分區:fdisk /dev/sdc n –> e –> 5 –> default &#…

    Linux干貨 2017-05-18
  • LVS DR模式

    一、測試環境說明 操作系統:CentOS6.7-X64 IP_VS版本:1.2.26 DR:10.10.10.130 VIP:10.10.10.140 RS1:10.10.10.131 RS2:10.10.10.132 二、LVS-DR模式原理 a)客戶端發送一個請求(源地址為CIP,目標地址為VIP,我們簡稱為CIP:VIP)到LVS的DR b)通過在調度…

    Linux干貨 2016-09-19
欧美性久久久久