掌握條件分支語句語法: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分支屬於匹配執行的方式,...