Ng 5 Các toán t穎 logic c栄a l羽nh test

Một phần của tài liệu LẬP TRÌNH TRONG MÔI TRƯỜNG SHELL (Trang 60 - 63)

Toán t

Ý ngh a

! expr1 Tr v úng n u expr1 là không đúng (Sai)

expr1 –a

expr2 Tr v úng n u c expr1 và expr2 đ u là úng

expr1 –o

expr2 Tr v úng n u ho c expr1 ho c expr2 là úng

7.3 Các hàm shell

Ngôn ng shell cho phép ng i s d ng t đ nh ngh a các hàm (function). Các hàm này s d ng g n gi ng nh các hàm trong C và các ngơn ng l p trình khác. L u ý Shell tcsh không h tr các hàm.

7.3.1 Cú pháp t o hàm

Cú pháp t o hàm c a bash và pdksh nh sau: ten_ham () {

61

... ; ; }

Ngồi ra pdksh cịn cho phép m t cú pháp t ng đ ng nh sau: function ten_ham {

cau_lenh_shell ...

; } }

Sau khi đã đnh ngh a hàm, ta có th g i nó b ng cách gõ dịng l nh sau: ten_ham [thamso1 thamso2 ...]

L u ý r ng ta có th truy n bao nhiêu tham s cho hàm c ng đ c. Khi truy n các tham s cho m t hàm, hàm s coi các tham s này nh các tham s v trí ($1=thamso1, $2=thamso2, ...) gi ng nh khi truy n các tham s dòng l nh cho

ch ng trình shell.

7.3.2 Các ví d t o hàm

Ví d sau bao g m nhi u hàm khác nhau, m i hàm th c hi n m t nhi m v t ng ng v i m t tu ch n dòng l nh. Ch ng trình này s nh n các tu ch n dòng l nh:

-Tu ch n th nh t ch ra thao tác th c hi n -Tu ch n th 2, ... là tên (các) t p nh p vào

D a vào tu ch n th nh t, ch ng trình th c hi n các thao tác sau:

-Tu ch n -u: đ c (các) t p vào, bi n đ i n i dung c a chúng thành ch hoa, và ghi ra (các) t p ra. Thao tác này do hàm chu_hoa() đ m nhi m.

-Tu ch n -l: đ c (các) t p vào, bi n đ i n i dung c a chúng thành ch th ng, và ghi ra (các) t p ra. Thao tác này do hàm chu_thuong() đ m nhi m.

-Tu ch n -p: đ c (các) t p vào, và in n i dung c a chúng ra. Thao tác này do hàm in_ra() đ m nhi m.

N u không ph i các tu ch n trên: in ra cách s d ng ch ng trình. Thao tác này do hàm in_cachsd() đ m nhi m.

Các t p ra có tên gi ng v i các t p vào nh ng có thêm ph n m r ng .out. chu_hoa () {

shift for i do

tr a-z A-Z <$1 >$1.out rm $1

mv $1.out $1 shift (adsbygoogle = window.adsbygoogle || []).push({});

62

chu_thuong () { shift

for i do

tr A-Z a-z <$1 >$1.out rm $1 mv $1.out $1 shift done; } print () { shift for i do lpr $1 shift done; } in_cachsd () {

echo "Cu phap cua $1 là $1 [-u|-l|-p] <t p_vao>" echo " "

echo "u ... luu thanh cac t p chu hoa" echo "l ... luu thanh cac t p chu thuong" echo "p ... in cac t p ra may in"; }

case $1 in p|-p) in_ra $@ ;; u|-u) chu_hoa $@ ;; l|-l) chu_thuong $@ ;; *) in_cachsd $0 ;; esac

63

7.4 Các m nh đ đi u ki n

Các m nh đ đi u ki n đ c dùng đ thi hành các ph n khác nhau c a ch ng trình shell tu thu c vào t ng đi u ki n c th . C bash, pdksh và tcsh đ u có hai d ng m nh đ đi u ki n là m nh đ if và m nh đ case. Cú pháp c a các m nh đ

này có khác bi t chút ít đ i v i các shell khác nhau.

7.4.1 M nh đ if

C 3 lo i shell nói trên đ u h tr m nh đ đi u ki n d ng if-then-else. Cú pháp c a m nh đ này có các d ng nh sau : a. D ng đ n gi n bash và pdksh tcsh if [bieu_thuc] then cau_lenh ... fi if (bieu_thuc) then cau_lenh ... endif

N u bi u th c bieu_thuc đ c đánh giá là úng thì (các) câu l nh cau_lenh s

đ c th c hi n, cịn khơng thì ch ng trình s b qua và th c hi n ngay câu l nh phía sau fi ho c endif.

N u ch có m t câu l nh đ c th c hi n trong if thì tcsh cịn có m t d ng đ n gi n h n là : if (bieu_thuc) cau_lenh b. D ng if-else bash và pdksh tcsh if [bieu_thuc] then cau_lenh ... else cau_lenh ... fi if (bieu_thuc) then cau_lenh ... else cau_lenh ... endif

D ng này m r ng d ng đ n gi n nói trên ch : n u bieu_thuc là Sai thì (các)

câu l nh cau_lenh sau else s đ c th c hi n.

Một phần của tài liệu LẬP TRÌNH TRONG MÔI TRƯỜNG SHELL (Trang 60 - 63)