shell 程式設計 11 流程控制

2021-10-04 04:57:48 字數 3362 閱讀 1481

sh指令碼的流程控制不可為空,如else後如果沒有需要執行的語句,則不要寫else

# 適用於指令碼形式

if condition

then

command1

command2

...commandn

fi# ---------------------

if condition1

then

command1

elif condition2

then

command2

else

commandn

fi# 適用於命令列

if [ 數值計算 ]; then command; fi

注:condition兩邊需用括起來

eg:

[root@k8s-master test6]# cat t0.sh 

#!/bin/bash

n1=$[2+3]

n2=$[2*3]

if test $[n1] -eq $[n2]

then

echo "test $[n1] -eq $[n2]: true"

else

echo "test $[n1] -eq $[n2]: false"

fi[root@k8s-master test6]# sh t0.sh

test 5 -eq 6: false

[root@k8s-master test6]#

格式:

# 適用於指令碼形式

for var in item1 time2 ... itemn

docommand1

command2

...commandn

done

# 適用於命令列形式

for var in item1 item2 ... itemn; do command1; command2... ; done

eg:

[root@k8s-master test6]# for var in 1 2 3 4 5; do echo "the value is: $var"; done

the value is: 1

the value is: 2

the value is: 3

the value is: 4

the value is: 5

[root@k8s-master test6]#

[root@k8s-master test6]# for str in 'hello world'; do echo "$str\n"; done

hello world\n

[root@k8s-master test6]#

格式:

while condition

docommand

done

eg:

[root@k8s-master test6]# ./t1.sh 12

345[root@k8s-master test6]# cat t1.sh

#!/bin/bash

i=1while (( $i <= 5))

do echo $i

let i++

done

[root@k8s-master test6]#

[root@k8s-master test6]# ./t2.sh

ctrl+d to exit

your like actor:tom

actor: tom

jack

actor: jack

[root@k8s-master test6]# cat t2.sh

#!/bin/bash

echo 'ctrl+d to exit'

echo -n 'your like actor:'

while read actor

do echo "actor: $actor"

done

[root@k8s-master test6]#

格式:

until condition

docommand

done

eg:

[root@k8s-master test6]# ./t3.sh 01

2345

6789

[root@k8s-master test6]# cat t3.sh

#!/bin/bash

i=0until [ ! $i -lt 10 ]

do echo $i

i=$[i+1]

done

[root@k8s-master test6]#

格式:

case val in

pattern1)

command1

command2

...commandn

;;pattern2)

command1

command2

...commandn

;;esac

eg:

[root@k8s-master test6]# ./t4.sh 

input a num between 1-2:

3input not 1 or 2

[root@k8s-master test6]# cat ./t4.sh

#!/bin/bash

echo 'input a num between 1-2:'

read n

case $n in

1) echo 'input 1'

;;2) echo 'input 2'

;;*)

echo 'input not 1 or 2'

;;esac

[root@k8s-master test6]#

[root@k8s-master test6]# ./t5.sh 

input 1 or 2

1input: 1

2input: 2

3not 1 or 2 break

[root@k8s-master test6]# cat t5.sh

#!/bin/bash

echo 'input 1 or 2'

while true

do read n

if [ $n -ne 1 -a $n -ne 2 ]

then

echo 'not 1 or 2 break'

break

else

echo "input: $n"

fidone

[root@k8s-master test6]#

Shell 程式設計(五)Shell流程控制

if condition1 then command1 elif condition2 then command2 else commandn fi方式一 for n in12 3doecho ndone 或for n in12 3 do echo n done 或for n in do echo ...

Shell程式設計的流程控制

和其他高階程式語言一樣,shell提供了用來控制程式執行流程的命令,包括條件分支和迴圈結構,使用者可以用這些命令建立非常複雜的程式。與傳統語言不同的是,shell用於指定條件值的不是布林表示式,而是命令和字串。1 測試命令 test命令用於檢查某個條件是否成立,它可以進行數值 字元和檔案3個方面的測...

Shell程式設計的流程控制

和其他高階程式語言一樣,shell提供了用來控制程式執行流程的命令,包括條件分支和迴圈結構,使用者可以用這些命令建立非常複雜的程式。與傳統語言不同的是,shell用於指定條件值的不是布林表示式,而是命令和字串。1 測試命令 test命令用於檢查某個條件是否成立,它可以進行數值 字元和檔案3個方面的測...