abc=okgán một giá trị cho biến abc. declare abckhai báo một biến được gọi là abc. Hai có thể được kết hợp như declare abc=ok.
Trong bash, giống như các shell khác, các biến chuỗi và mảng không cần phải khai báo, do đó declarekhông cần thiết trừ khi bạn muốn vượt qua các tùy chọn, ví dụ declare -A abcđể tạo abcmột mảng kết hợp hoặc declare -rtạo một biến chỉ đọc. Tuy nhiên, bên trong một hàm, declaresẽ tạo ra sự khác biệt: nó làm cho biến là cục bộ của hàm, nghĩa là giá trị của biến bên ngoài hàm (nếu có) được giữ nguyên. (Trừ khi bạn sử dụng declare -g, làm cho biến không cục bộ; điều này hữu ích khi được kết hợp với các tùy chọn khác, ví dụ: declare -gAđể tạo một mảng kết hợp toàn cục trong một hàm.) Ví dụ:
f () {
declare a
a='a in f'
b='b in f'
echo "From f: a is $a"
echo "From f: b is $b"
}
a='Initial a'
b='Initial b'
f
echo "After f: a is $a"
echo "After f: b is $b"
Đầu ra:
From f: a is a in f
From f: b is b in f
After f: a is Initial a
After f: b is b in f
Một điều khác bạn có thể làm với declarenội dung là
Nội dung declarelà duy nhất để bash. Nó được truyền cảm hứng mạnh mẽ và rất gần với typesetnội dung của ksh , và bash cung cấp typesetnhư một từ đồng nghĩa của declaretính tương thích. (Tôi không biết tại sao bash không chỉ gọi nó typeset). Có một từ đồng nghĩa thứ ba , local. Ngoài ra, cũng exportgiống như declare -x, một lần nữa cho khả năng tương thích (với mọi vỏ kiểu Bourne).
declareTÊN cục bộ, như vớilocallệnh. Các-gtùy chọn ngăn chặn hành vi này. Xemhelp declare.