Bin cb và bên toàn c

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

khai báo bi n c c b ch có hi u l c bên trong hàm, hãy dùng t khóa local. N u khơng có t khóa local, các bi n s đ c xem là tồn c c (global), chúng có th t n t i và l u gi k t quá ngay sau khi hàm đã ch m d t. Bi n tồn c c đ c nhìn th y và có th thay đ i b i t t c các hàm trong cùng script. Tr ng h p đã có bi n tồn c c nh ng l i khai báo bi n c c b cùng tên, bi n c c b s có giá tr u tiên và hi u l c cho đ n khi hàm ch m d t.

Ví d 3-17 function2.sh

#!/bin/sh

sample_text="global variable" foo() {

local sample_text="local variable" echo "Function foo is executing" echo $sample_text

}

echo "script starting" echo $sample_text foo

echo "script ended" echo $sample_text exit 0

33 K t q a k t xu t

$./function2.sh script starting global variable

Function foo is executing

local variable #sample_text is local in function

script ended

global variable #sample_text is global outside the function

Hàm có th tr v m t giá tr . tr v giá tr s , b n có th dùng l nh return. Ví d :

foo( ) {

return 0

}

trá v giá tr chu i, b n có th dùng l nh echo và chuy n h ng n i đung k t xu t c a hàm khi g i nh sau:

foo() {

echo "string value" }

. . .

x= $ ( foo )

Bi n x s nh n tr tr v c a hàm foo() là "string value". $() là cách l y v n i dung c a m t l nh. Có m t cách khác đ l y tr tr v c a hàm, đó là s đ ng bi n toàn c c (do bi n toàn c c v n l u l i tr ngay c khi h m ch m d t). Các script trong ch ng trình

ng d ng cu i ch ng s s d ng đ n k thu t này.

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