Arguments, return values, and scope

Submitted by tinhxleev2 on Sun, 10/31/2021 - 05:07

Đem một arguments biến vào một hàm trong bash, trả lại gái trị và tầm (scope).

Đem arguments vào trong hàm tương tự như đem argument vào bash script

Scope (tầm) xác định biến được truy cập với tầm nào, tầm global thì biến có thể truy cập ở tất cả mọi nơi trong chương trình. 

Tầm local thì biển chỉ được truy cập ở một phần nào đó ở trong chương trình. 

Không giống như các ngôn ngữ lập trình khác, bash khi có biên thì nó mặc định là ở tầm global, và sẽ có rủi ro nếu có sự cố ngoài ý muốn. 

Trong một hàm để khai báo biến ở tầm local thì bạn sử dụng từ khoá local

function ten_file () {

   local bien=$1

}

Giờ đem một số đối biến (arguments) vào 

ten_file "ten1.txt" "ten2.csv"

echo $bien

Vì bạn khai báo local cho bien nên nó sẽ không thể truy cập bên ngoài phạm vi trong hàm ten_file ví vậy sẽ không có gì được echo ra như ví dụ trên. 

Trả biến lại bằng cách giao thành biến ở tầm global hoặc echo

Ví dụ một hàm đổi inch sang cm 

function in_cm () {

     doi_cm=$(echo "scale=2; $1 * 2.54"| bc)

}

in_sang_cm=$(in_cm 3)

echo "3 inch tuong ung voi $in_sang_cm cm"

Trường hợp đặc biệt bạn muốn lấy length của array trong ARGV thì sử dụng ${#1}

Learing