shell指令碼學習 分支 3

2021-10-02 19:16:59 字數 2827 閱讀 4386

掌握條件分支語句語法:if、case

1- 條件判斷的或邏輯為:-o

2-  test用法和[ ]用法等價。注意對於位置變數可以用等於號等符號,對於整形、字元、檔案只能用對應的判斷符號!!

3-  條件為真時等於0!

4- if判斷中用 , 外部、內部的前後不能由空格

5-  case匹配項只能是字串,每個分支以;;結束

基本原裡和c語言一樣,只是細節差異。

a- 基本語法

/*1- 無else分支*/

if 條件

then

do somtthing

fi/*2- 有else分支*/

if 條件

then

do somtthing

else

do something

fi/*3- 多個else分支*/

if 條件

then

do something

elif 條件

then

do something

else

do something

fi

b- 示例

說明:編寫乙個指令碼,用於判斷輸入的檔案是什麼型別的。

對於檔案型別可以參考:

總結:

1- 條件判斷的或邏輯為:-o

2-  test用法和[ ]用法等價

3-  條件為真時等於0!

4- if判斷中用 , 外部、內部的前後不能由空格

#!/bin/bash

#入參檢查。-o表示或邏輯

if [ $# -le 0 -o $# -gt 1 ]

then

echo "input param is zero or to much!"

exit

fi#判斷檔案是否存在。

#注意內部、外部由空格隔開;條件if ! test -e $1和if ! [ -e $1 ]等價

if ! [ -e $1 ]

then

echo "file not exit"

exit

fiif [ -f $1 ]

then

echo "it's file"

elif [ -d $1 ]

then

echo "it's direct"

elif [ -l $1 ]

then

echo "it's bdev"

elif [ -c $1 ]

then

echo "it's cdev"

elif [ -b $1 ]

then

echo "it's bdev"

elif [ -s $1 ]

then

echo "it's socket"

else

echo "other type file"

fi

演示示例:

#終端中輸入下面命令,列印檔案型別

./shell.sh 檔名

可以通過下面命令去/dev路徑下找字元裝置(c)、塊裝置檔案(d)、鏈結檔案(l)、普通檔案(f)、目錄(d)

ls -l /dev | grep "^c"  //在/dev路徑下查詢檔案型別為字元裝置的檔案
a- 基本語法

和c語言大同小異:

i- 只能是字串

ii- 每個分支以兩個分號;;結束

iii- 某個分支有兩個條件可以用或」|『

iii- *)表示c語言裡的default分支,最後可以不加雙分號;;

case 字串 in

條件1)

do something

;;條件2 | 條件3)

do something

;;*)

do something

esac

b- 示例程式

使用case編寫判斷檔案型別的程式

#!/bin/bash

#入參檢查。-o表示或邏輯

if [ $# -le 0 -o $# -gt 1 ]

then

echo "input param is zero or to much!"

exit

fi#判斷檔案是否存在。

#注意內部、外部由空格隔開;條件if ! test -e $1和if ! [ -e $1 ]等價

if ! [ -e $1 ]

then

echo "file not exit"

exit

fi#獲取檔案型別,為了強行用case也是醉了。。。

if [ -f $1 ]

then

type=f

elif [ -d $1 ]

then

type=d

else

type=o

ficase $type in

f) echo "it's file"

;; d)

echo "it's direct"

;; *)

echo "other type file"

esac

shell指令碼程式設計 if分支語句 分支結構

使用者的資訊會寫到 etc passwd 同時會生成此使用者名稱命名的家目錄 在 home 建立 從鍵盤讀取使用者輸入的密碼資訊,驗證輸入的密碼是否為123456 如果輸入正確,顯示密碼正確,如果錯誤,顯示密碼錯誤。ssh ip位址 vim passwd.sh bin bash read p 請輸入...

shell指令碼程式設計 分支結構if分支語句,多分支

1.5 shell指令碼程式設計 分支結構if分支語句,多分支 使用者的資訊會寫到 etc passwd 同時會生成以此使用者名稱命名的家且錄 在 home建立 從鍵盤讀取使用者輸入的密碼資訊,驗證輸入的密碼是否為123456,如果輸入正確,顯示密碼正確,如果錯誤,顯示密碼錯誤。bin bash r...

Shell基於case分支編寫指令碼

本案例要求編寫test.sh指令碼,相關要求如下 能使用redhat fedora控制引數 控制引數通過位置變數 1傳入 當使用者輸入redhat引數,指令碼返回fedora 當使用者輸入fedora引數,指令碼返回redhat 當使用者輸入其他引數,則提示錯誤資訊 case分支屬於匹配執行的方式,...