CƠ BẢN VỀ LINUX SHELL SCRIPT - Trang 8


VietHung soft group -

[email protected]

word=

"abcde"

#

khëi

t¹o

mét

x©u

dem

=

0

#

khëi

t¹o

biÕn

count

for letter in $word # vßng lÆp víi biÕn letter

do #

lÖnh

b¾t

®Çu

vßng

lÆp

count=`expr $count + 1` # t¨ng biÕn count lªn 1

echo "Letter $count is [$letter]" # in ra biÕn letter

done #

lÖnh

kÕt

thóc

vßng

lÆp


Cã thÓ gi¶i thÝch nh− sau: víi mçi letter trong word th× thùc hiÖn nh÷ng lÖnh n»m trong do-

done, trong vÝ dô trªn bao gåm t¨ng biÕn count vµ in biÕn letter ra mµn h×nh.

Chó ý: Trong vÝ dô trªn cã dïng lÖnh expr ®Ó gäi lÖnh thùc hiÖn tÝnh to¸n cña hÖ thèng tÝnh

phÐp céng tr−íc khi g¸n vµo biÕn count.

6.2 CÊu tróc vßng lÆp: while

CÊu tróc cña vßng lÆp while ®−îc thÓ hiÖn nh− sau:

while [ <®iÒu kiÖn> ]

do

<c¸c

lÖnh>

done


VÝ dô 6: VÝ dô vÒ vßng lÆp while.

#!/bin/sh

#Vi du 6

word=

"abcde"

#

khëi

t¹o

mét

x©u

dem

=

0

#

khëi

t¹o

biÕn

count

while [ $count –lt 5 ] # vßng lÆp víi biÕn letter

do #

lÖnh

b¾t

®Çu

vßng

lÆp

count=`expr $count + 1` # t¨ng biÕn count lªn 1

echo "Letter $count is [$letter]" # in ra biÕn letter

done #

lÖnh

kÕt

thóc

vßng

lÆp


C¸c b¹n cã thÓ thÊy ngay cÊu tróc hai vßng lÆp trªn gÇn hoµn toµn gièng nhau, chØ kh¸c
dßng for/while. Trong vÝ dô trªn, $count -lt 5 ®−îc coi lµ ®iÒu kiÖn cña vßng lÆp. PhÐp so

s¸nh “-lt” lµ phÐp so s¸nh “nhá h¬n hoÆc b»ng” (less-than) trong lÖnh test cña Unix/Linux.

LÖnh kiÓm tra ®iÒu kiÖn trªn sÏ tr¶ ra gi¸ ®óng (1) trÞ hoÆc sai (0) ®Ó thùc hiÖn tiÕp hay tho¸t
khái vßng lÆp.
Ngoµi phÐp so s¸nh “-lt" cßn cã -gt-lín h¬n, -eq-b»ng, -ne-kh«ng b»ng. Trong phÇn phô

lôc chóng t«i cã liÖt kª l¹i c¸c lÖnh, tham sè vµ phÐp to¸n cña shell, c¸c b¹n cã thÓ ®äc ®Ó biÕt
thªm c¸c phÐp to¸n kh¸c.