快速入門Shell指令碼之條件判斷語句與迴圈

2022-09-26 13:24:22 字數 3699 閱讀 5823

相信大家已經對shell指令碼有一定的了解了,大家對於shell指令碼的條件判斷語句一定非常期待。本篇部落格,我們來聊一聊關於shell的條件判斷語句與迴圈。

[condition]

注意:

(1)兩個整數之間比較 = 字串比較

(2)按照檔案許可權進行判斷

(3)按照檔案型別進行判斷

23是否大於等於22 使用$?檢視結果為true返回0

[root@node01 shell]# [ 23 -ge 22 ]

[root@node01 shell]# echo $?

0檢視檔案具體的許可權 使用$?檢視結果為true返回0

[root@node01 shell]# [ -w helloword.sh ]

[root@node01 shell]# echo $?

0檢視某個目錄下的檔案是否存在 使用$?檢視結果為true返回0

[root@node01 shell]# [ -e /opt/shell/aa.txt ] --不存在

[root@node01 shell]# echo $?

1[root@node01 shell]# [ -e /opt/shell/helloword.sh ]

[root@node01 shell]# echo $?

0多條件判斷(&&表示前一條命令執行成功是,才執行後一條命令,||表示上乙個命令執行失敗後,才執行下一條命令)

[root@node01 shell]# [ condition ] && echo ok || echo notok

ok[root@node01 shell]# [ condition ] && [ ] ||echo notok

notoksvqiqnvnf

1.4.1 基本語法

if [條件判斷式];then

程式fi

或者if [ 條件判斷式 ]

then

程式fi #結束符

注意:

1.4.2 案例實操

輸入乙個數字,如果是1,則輸出我是張三,如果為2,則輸出我是李四,如果為其什麼不輸出。

[root@node01 shell]# vim if.sh

if [ $1 -eq '1' ]

then

echo '我是張三'

elif [ $1 -eq '2' ]

then

echo '我是李四' 程式設計客棧

fi[root@node01 shell]# sh if.sh 2

我是李四

[root@node01 shell]# sh if.sh 1

我是張三

[root@node01 shell]# sh if.sh 3

[root@node01 shell]#

1.5.1 基本語法

case $變數名 in

"值1")

程式1 ;;

"值2")

程式2 ;;

"值n")

程式n ;;

esac

注意事項:

1.5.2 案例實操

輸入乙個數字,如果是1,則輸出班長,如果是2,則輸出副班長,如果是其他,則輸出人妖。

[root@node01 shell]# vim case.sh

#!/bin/bash

case $1 in

'1')

echo '班長' ;;

'2')

echo '副班長' ;;

'*')

echo '人妖' ;;

esac

[root@node01 shell]# sh case.sh 1

班長[root@node01 shell]# sh case.sh 2

副班長[root@node01 shell]# sh case.sh 3

人妖2.1.1基本語法1

for ((初始值;迴圈控制條件;變數變化))

do 程式done

2.1.2 案例實操

從1加到100

**[root@node01 shell]# vim for1.sh

#!/bin/bash

num=0

for((i=0;i<=100;i++))

do num=$[$num+$i]

done

echo $num

[root@node01 shell]# sh for1.sh

5050

2.1.3基本語法2

for 變數 in 值1 值2 值3 ..

do 程式

done

2.1.4例項實操

列印所有輸入的引數

hie[root@node01 shell]# vim for2.sh

#!/bin/bash

for i in $*

do echo " i love $i "

done

[root@node01 shell]# sh for2.sh 張三 李四

i love 張三

i love 李四

$ *和$ @都表示傳遞給函式或指令碼的所有引數,不能被雙引號「」包含是,都以$ 1.$ 2…$ n的形式輸出所有引數。

[root@node01 shell]# vim for3.sh

#!/bin/basn

for i in $*

do echo " i love $i"

done

for j in $@

do echo " i love $j"

done

[root@node01 shell]# sh for3.sh 張三 李四 王五

i love 張三

i love 李四

i love 王五

i love 張三

i love 李四

i love 王五

當他們被雙引號「」包含時,「$*」會將所有的引數作為乙個整體,以$1,$2,3... 3...3...n的形式輸出所有引數;「$@會將各個引數分開,以「$1」,「$2」,「3 」 . . . . 「 3」....「3」....「n」的形式輸出所有引數。

[root@node01 shell]# vim for4.sh

#!/bin/bash

for i in "$*"

do echo " i love $i "

done

for j in "$@"

do e程式設計客棧cho " i love $j "

done

[root@node01 shell]# sh for4.sh 張三 李四 王五

i love 張三 李四 王五

i love 張三

i love 李四

i love 王五

3.2.1 基本語法

while [提交判斷式]

do 程式

done

3.2.2 案例實操

從1加到100

[root@node01 shell]# vim while.sh

#!/bin/bash

num=0

i=1while [ $i -le 100 ]

do num=$[$num+$i]

i=$[$i+1]

done

echo $num

[root@node01 shell]# sh while.sh

5050

shell指令碼快速入門之 陣列

四 陣列的操作 五 陣列指令碼例項 什麼是陣列?陣列是存放相同型別資料的集合,在記憶體中開闢了連續的空間,通常配合迴圈使用 普通陣列 不需要宣告直接定義,下標索引只能是整數 關聯陣列 需要用declare a宣告否則系統不識別,索引可以是字串 如 arr 11 22 33 44 陣列名稱 arr 陣...

Shell指令碼快速入門 1

shell 是乙個用 c 語言編寫的程式,使用者可以通過shell指令碼語言來進行程式開發。與其他指令碼語言不同,shell指令碼所需的直譯器一般是內建在作業系統的,而像node.js php等指令碼語言需要手動安裝直譯器程式才可以。接下來將和大家一起來學習shell指令碼程式設計。shell直譯器...

shell判斷false shell條件判斷

shell 開頭以sh字尾 開頭 注釋,表明採用何種直譯器 bin bash author cheonghu date 2020 05 06 desc shell demo abc檔案許可權 ll total 4 rw r r 1 root root 88 apr 24 22 15 demo.sh其...