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 Linuxngườ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 Bashmà không cần nhập một đường dẫn rõ ràng đến nó, chẳng hạn như ./commandcó thể được chia thành hai loại: Bash shell builtinsvà external commands. Bash shell builtinsđược cài đặt với Bashvà là một phần của nó trong khi external commandskhô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 bashvà tài liệu của họ cũng có thể được gọi bằng helplệnh trong khi external commandsthường được ghi lại theo cách riêng của họ manpageshoặc lấy một số vua -h, --helpcờ. Để kiểm tra xem một lệnh là một Bash shell builtinhoặ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 đó locallà 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 đó vimkhông phải là shell builtinmộ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 commandvà shell builtincùng một lúc. Thêm -avào typedanh 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 đó echolà cả a shell builtinvà an external command. Tuy nhiên, nếu bạn chỉ cần gõ echovà ép Returnmột shell builtinsẽ đượ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 echonày không cần phải giống nhau. Ví dụ, trên hệ thống của tôi /usr/bin/echocó --helpcờ trong khi builtinkhông.
Ok, bây giờ khi chúng ta biết rằng đó locallà 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 manpagesvà hình thức tài liệu trên *nixthế 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 Linuxcông việc như thế nào .
localcũng hỗ trợ ?
man bash. Khi ở đó, gõ /Arrays$để nhảy đến phần trên mảng. (Việc theo $sau Arrayslà để 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.
helpkhô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.
localchỉ 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 localbê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, $onlyherekhô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 . ;)