Tôi đang học kịch bản bash và tìm thấy điều này trên / usr / share / bash-xong, dòng 305:
local cword words=()
Nó làm gì? Tất cả các hướng dẫn trực tuyến chỉ ở định dạng
local var=value
Tôi đang học kịch bản bash và tìm thấy điều này trên / usr / share / bash-xong, dòng 305:
local cword words=()
Nó làm gì? Tất cả các hướng dẫn trực tuyến chỉ ở định dạng
local var=value
Câu trả lời:
Mặc dù tôi thích câu trả lời được đưa ra bởi jordanm nhưng tôi nghĩ điều quan trọng không kém là chỉ cho Linux
người dùng ít kinh nghiệm hơn cách tự đối phó với những câu hỏi như vậy.
Cách được đề xuất là nhanh hơn và linh hoạt hơn so với tìm kiếm câu trả lời tại các trang ngẫu nhiên hiển thị trên trang kết quả tìm kiếm của Google.
Đầu tiên, tất cả các lệnh có thể được chạy trong Bash
mà không cần nhập một đường dẫn rõ ràng đến nó, chẳng hạn như ./command
có thể được chia thành hai loại: Bash shell builtins
và external commands
. Bash shell builtins
được cài đặt với Bash
và là một phần của nó trong khi external commands
không phải là một phần của Bash
. Điều này rất quan trọng vì Bash shell builtins
được ghi lại bên trong man bash
và tài liệu của họ cũng có thể được gọi bằng help
lệnh trong khi external commands
thường được ghi lại theo cách riêng của họ manpages
hoặc lấy một số vua -h, --help
cờ. Để kiểm tra xem một lệnh là một Bash shell builtin
hoặc một external command
:
$ type local
local is a shell builtin
Nó sẽ hiển thị how command would be interpreted if used as a command name
(từ help type
). Ở đây chúng ta có thể thấy đó local
là một shell builtin
. Hãy xem một ví dụ khác:
$ type vim
vim is /usr/bin/vim
Ở đây chúng ta có thể thấy đó vim
không phải là shell builtin
một lệnh bên ngoài /usr/bin/vim
. Tuy nhiên, đôi khi cùng một lệnh có thể được cài đặt cả hai external command
và shell builtin
cùng một lúc. Thêm -a
vào type
danh sách tất cả các khả năng, ví dụ:
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
Ở đây chúng ta có thể thấy đó echo
là cả a shell builtin
và an external command
. Tuy nhiên, nếu bạn chỉ cần gõ echo
và ép Returnmột shell builtin
sẽ được gọi là bởi vì nó xuất hiện đầu tiên trong danh sách này. Lưu ý rằng tất cả các phiên bản echo
này không cần phải giống nhau. Ví dụ, trên hệ thống của tôi /usr/bin/echo
có --help
cờ trong khi builtin
không.
Ok, bây giờ khi chúng ta biết rằng đó local
là một vỏ được xây dựng, hãy tìm hiểu cách thức hoạt động của nó:
$ help local
local: local [option] name[=value] ...
Define local variables.
Create a local variable called NAME, and give it VALUE. OPTION can
be any option accepted by `declare'.
Local variables can only be used within a function; they are visible
only to the function where they are defined and its children.
Exit Status:
Returns success unless an invalid option is supplied, an error occurs,
or the shell is not executing a function.
Lưu ý dòng đầu tiên: name[=value]
. Tất cả mọi thứ giữa [
và ]
là tùy chọn . Đó là một quy ước phổ biến được sử dụng trong nhiều manpages
và hình thức tài liệu trên *nix
thế giới. Điều đó đang được nói, lệnh bạn hỏi về câu hỏi của bạn là hoàn toàn hợp pháp. Đổi lại, ...
ký tự có nghĩa là đối số trước đó có thể được lặp lại. Bạn cũng có thể đọc về quy ước này trong một số phiên bản của man man
:
The following conventions apply to the SYNOPSIS section and can be used
as a guide in other sections.
bold text type exactly as shown.
italic text replace with appropriate argument.
[-abc] any or all arguments within [ ] are optional.
-a|-b options delimited by | cannot be used together.
argument ... argument is repeatable.
[expression] ... entire expression within [ ] is repeatable.
Vì vậy, vào cuối ngày, tôi hy vọng rằng bây giờ bạn sẽ dễ dàng hiểu được các lệnh khác nhau trong Linux
công việc như thế nào .
local
cũng hỗ trợ ?
man bash
. Khi ở đó, gõ /Arrays$
để nhảy đến phần trên mảng. (Việc theo $
sau Arrays
là để ngăn chặn việc đi xe đạp qua các tham chiếu trong văn bản đến phần.) Từ đó bạn có thể nhập f
để chuyển tiếp một trang hoặc b
để đi lùi. Nhập q
để thoát khỏi trang man khi bạn hoàn thành.
help
không có đối số sẽ liệt kê tất cả các nội dung bash nếu bạn tò mò muốn xem thêm.
local
chỉ cần khai báo một biến chỉ có phạm vi trong hàm được xác định hiện tại, để môi trường thực thi chính không thể "nhìn thấy" giá trị. Bạn không thể sử dụng local
bên ngoài một chức năng. Thí dụ
func() {
nonlocal="Non local variable"
local onlyhere="Local variable"
}
func
echo $nonlocal
echo $onlyhere
Đầu ra: Biến không cục bộ
Vì vậy, $onlyhere
không thể nhìn thấy bên ngoài phạm vi của chức năng.
var=()
, nhưng tôi cho rằng có một chút gì đó để tìm ra mà không cần biết tên của những gì bạn đang tìm kiếm . ;)