shell循環語句用法

shell循環語句常用的有if、case、for、while循環等。

工具/原料

shell

if循環

if 語句

then

命令1

else

命令2

fi

if語句的進階用法:

if 條件1

then

命令1

else if 條件2

then

命令2

else

命令3

fi

舉例說明下if語句的用法,如下所示:

#!/bin/bash

if [ "10" -lt "12" ]

then

echo "10確實比12小"

else

echo  "10不小於12"

fi

case語句語法

case 值 in

模式1)

命令1

;;

模式2)

命令2

;;

*)

命令3

;;

esac

case取值後面必須為單詞in,每一模式必須以右括號結束。取值可以為變量或常數。匹配發現取值符號某一模式後,其間所有命令開始執行直至;;。模式匹配符*表示任意字符,?表示任意單字符,[..]表示類或範圍中任意字符。

case語句適合列印成績或用於/etc/init.d/服務類腳本。

以下面的腳本舉例說明下,內容如下所示:

#!/bin/bash

#case select

echo -n "Enter a number from 1 to 3:"

read ANS

case $ANS in

1)

echo "you select 1"

;;

2)

echo "you select 2"

;;

3)

echo "you select 3"

;;

*)

echo "`basename $0`: this is not between 1 and 3"

exit;

;;

esac

稍為複雜的實例說明,/etc/init.d/syslog腳本的部分代碼如下:

case "$1" in

start)

start

exit 0

;;

stop)

stop

exit 0

;;

reload|restart|force-reload)

stop

start

exit 0

;;

**)

echo "Usage: $0 {start|stop|reload|restart|force-reload}"

exit 1

;;

esac

for循環

for 變量名 in 列表

do

命令

done

當變量值在列表里,for循環即執行一次所有命令,使用變量名訪問列表中取值。命令可為任何有效的shell命令和語句。變量名為任何單詞。in列表可以包含替換、字符串和文件名,還可以是數值範圍,例如{100..200},舉例說明如下:

for n in {100..200}

do

host=192.168.1.$n

ping -c2 $host &>/dev/null

if [ $? = 0 ]; then

echo "$host is UP"

else

echo "$host is DOWN"

fi

done

while 條件

do

命令

done

程序

#/bin/bash

cat test.txt | while read LINE

do

echo $LINE

done

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場