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

2021-10-04 07:23:41 字數 1740 閱讀 9049

//使用者的資訊會寫到/etc/passwd

//同時會生成此使用者名稱命名的家目錄 在/home 建立

從鍵盤讀取使用者輸入的密碼資訊,驗證輸入的密碼是否為123456

如果輸入正確,顯示密碼正確,如果錯誤,顯示密碼錯誤。

# ssh ip位址

# vim passwd.sh

#!/bin/bash

read -p 「請輸入密碼:」 passwd

if test $passwd =「123456」 //字串建議用雙引號

# if [ $passwd = 「123456」] //用中括號測試語句

then

echo 「passwd is ok 」

else

echo 「密碼輸入錯誤」

fi 解決輸入的密碼資訊和已有的資訊做匹配的問題:

使用test測試:

檔案屬性測試

字串測試

算數測試

命令格式:

test 測試語句

[測試語句] //括號兩遍要有空格

檔案屬性測試

-e 檔案存在為真

-t 檔案存在為真且是乙個常規檔案

-d 檔案存在為真且是乙個目錄

-c 檔案存在為真且特殊字元為真

-b 檔案存在為真且是乙個特殊塊

-g 檔案存在且設定了sgid位為真

-u 檔案存在且設定了ugid位為真

-r 檔案存在且可讀為真

-w 檔案存在且可寫為真

-x 檔案存在且可執行為真

-s 檔案存在且不為空為真

邏輯與和邏輯或:

&& 邏輯與

|| 邏輯或

true 為真

false 為假

true && false --> false (true)

當第乙個條件為真時,返回第二個條件 false

true && true --> true (true)

false && false --> false (false)

當第乙個條件為假時,返回第乙個條件

//兩者都為真(假),結果為真(假)

//有乙個為假(真),結果為假(真)

字串測試:

-z 為空為真

-n 不為空為真

= 相同為真

!= 不相同為真

> 字典排名在前為真

< 字典排名在後為真

if test -z $username

then

echo 「請輸入密碼:」

else

執行密碼不為空的語句

fi算數測試操作:

-eq 等於

-ne 不等於

-gt 大於

-ge 大於等於

-lt 小於

-le 小於等於

單分支:

if 測試的語句或命令

then

執行語句1

fi雙分支:

if 測試的語句或命令

then

執行語句2

fi多分支:

if 測試的語句或命令

then

執行語句1

elif

執行語句2

elif

執行語句3

else

執行語句4

fi

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

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

shell程式設計 if else fi分支語句

1.if then elif else fi 與c語言的類似,if 某個條件 成立就執行 這後面 要加乙個 then 可以理解成那麼 elif c語言中的 else if 某個條件 fi 則是 結束 這個 if 語句的結束標誌 因為 c語言中 一般都是 if 用 括號結束 但是 shell中則不是用...

shell程式設計 case esac分支語句

case esac分支語句就類似於c語言的switch case 分支語句,但是呢語法又有些不同我們先來看乙個簡單的例子 然後我們再來講解一下各個 關鍵字元 或者關鍵字的含義 這裡read yes or no等待使用者輸入乙個字串 程序阻塞 然後 case yes or no in 這個 in 表示...