Briana's Bash Tutorial: How to Use the Command Line in Linux, Windows, and Mac
Mục lục:
- Mảng Bash
- Tạo Mảng Bash
- Tạo các mảng được lập chỉ mục số
- Tạo mảng kết hợp
- Hoạt động mảng
- Yếu tố tham khảo
- Độ dài mảng
- Vòng qua mảng
- Thêm một yếu tố mới
- Xóa một phần tử
- Phần kết luận
Mảng là một trong những cấu trúc dữ liệu cơ bản và được sử dụng nhiều nhất. Bạn có thể nghĩ về một mảng là một biến có thể lưu trữ nhiều biến trong đó., chúng tôi sẽ đề cập đến các mảng Bash và giải thích cách sử dụng chúng trong các tập lệnh Bash của bạn.
Mảng Bash
Bash hỗ trợ các kiểu mảng được liên kết và lập chỉ mục số một chiều. Mảng số được tham chiếu bằng các số nguyên và kết hợp được tham chiếu bằng các chuỗi.
Các mảng được lập chỉ mục bằng số có thể được truy cập từ cuối bằng cách sử dụng các chỉ số âm, chỉ mục của
-1
tham chiếu phần tử cuối cùng. Các chỉ số không phải tiếp giáp nhau.
Không giống như hầu hết các ngôn ngữ lập trình, các phần tử mảng Bash không phải cùng loại dữ liệu. Bạn có thể tạo một mảng chứa cả chuỗi và số.
Bash không hỗ trợ các mảng nhiều chiều và bạn không thể có các phần tử mảng cũng là mảng.
Không có giới hạn về số lượng phần tử tối đa có thể được lưu trữ trong một mảng.
Tạo Mảng Bash
Mảng trong Bash có thể được khởi tạo theo những cách khác nhau.
Tạo các mảng được lập chỉ mục số
Các biến Bash được gỡ bỏ, bất kỳ biến nào cũng có thể được sử dụng như một mảng được lập chỉ mục mà không cần khai báo nó.
Để khai báo rõ ràng một mảng, sử dụng khai báo dựng sẵn:
declare -a array_name
Một cách để tạo một mảng được lập chỉ mục là sử dụng mẫu sau:
array_name=value_1 array_name=value_2 array_name=value_n
Trong đó
index_*
là số nguyên dương.
Một cách khác để tạo một mảng số là chỉ định danh sách các phần tử trong ngoặc đơn, được phân tách bằng khoảng trống:
array_name=(element_1 element_2 element_N)
Khi mảng được tạo bằng biểu mẫu ở trên, việc lập chỉ mục bắt đầu từ 0 tức là phần tử đầu tiên có chỉ số là
0
.
Tạo mảng kết hợp
Không giống như được lập chỉ mục bằng số, các mảng kết hợp phải được khai báo trước khi chúng có thể được sử dụng.
Để khai báo một mảng kết hợp, sử dụng
declare
dựng sẵn với tùy chọn
-A
(chữ hoa):
declare -A array_name
Mảng kết hợp có thể được tạo bằng cách sử dụng mẫu sau:
declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz
Trong đó
index_*
có thể là bất kỳ chuỗi nào.
Bạn cũng có thể tạo một mảng kết hợp bằng cách sử dụng mẫu dưới đây:
declare -A array_name array_name=(=value_foo =value_bar =value_xyz)
Hoạt động mảng
Cú pháp mảng Bash có thể trông hơi lạ lúc đầu, nhưng nó sẽ có ý nghĩa hơn khi bạn đọc bài viết này.
Yếu tố tham khảo
Để tham chiếu một yếu tố duy nhất, bạn cần biết chỉ số yếu tố.
Bất kỳ yếu tố nào cũng có thể được tham chiếu bằng cú pháp sau:
${array_name}
Cú pháp để truy cập một phần tử mảng tương tự như cú pháp của hầu hết các ngôn ngữ lập trình. Các dấu ngoặc nhọn
${}
được yêu cầu để tránh các toán tử mở rộng tên tệp của shell.
Hãy in phần tử với chỉ số
1
:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}
Helium
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium
Sự khác biệt duy nhất giữa
@
và
*
là khi biểu mẫu
${my_array}
được bao quanh với dấu ngoặc kép. Trong trường hợp này,
*
mở rộng thành một từ duy nhất trong đó các phần tử mảng được phân tách bằng dấu cách.
@
mở rộng từng phần tử mảng thành một từ riêng biệt. Điều này đặc biệt quan trọng khi sử dụng biểu mẫu để xóa mù chữ thông qua các phần tử mảng.
Để in các phím của mảng thêm
!
Toán tử trước tên mảng:
${!array_name}
Đây là một ví dụ:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"
Độ dài mảng
Để có được độ dài của một mảng, sử dụng mẫu sau:
${#array_name}
Cú pháp giống như khi tham chiếu tất cả các phần tử thêm vào ký tự
#
trước tên mảng.
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}
Vòng qua mảng
Cách phổ biến nhất để lặp lại qua từng mục trong một mảng là sử dụng vòng lặp for:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done
Đoạn mã trên sẽ lặp lại trên mảng và in từng phần tử trong một dòng mới:
Hydrogen Helium Lithium Beryllium
Dưới đây là một ví dụ về cách in tất cả các khóa và giá trị:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
Một cách khác để lặp qua một mảng là lấy chiều dài của mảng và sử dụng vòng lặp
C style
:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
Thêm một yếu tố mới
Để thêm một phần tử mới vào một mảng bash và chỉ định chỉ mục của nó, hãy sử dụng mẫu sau:
my_array="New Element"
Đây là một ví dụ:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Aluminum
Một cách khác để thêm một phần tử mới vào một mảng mà không chỉ định chỉ mục là sử dụng toán tử
+=
. Bạn có thể thêm một hoặc nhiều yếu tố:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
Xóa một phần tử
Để xóa một yếu tố, bạn sẽ cần biết chỉ số thành phần. Một phần tử có thể được loại bỏ bằng lệnh
unset
:
unset my_array
Hãy xem một ví dụ:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"
Phần kết luận
Chúng tôi đã giải thích làm thế nào để tạo các mảng được lập chỉ mục và liên kết số. Chúng tôi cũng đã chỉ ra cách lặp qua các mảng, tính toán độ dài mảng và thêm và loại bỏ các phần tử.
thiết bị đầu cuối bashTổ chức công nghiệp Hiệp hội GSM đã hoàn thành thử nghiệm SIP-I, một giao thức sẽ làm cho nó có thể gửi lưu lượng chuyển mạch di động chuyển mạch qua mạng lõi dựa trên giao thức Internet. Theo Mark Hogan, giám đốc chương trình tại Hiệp hội GSM, trong cuộc thử nghiệm, SIP-I (Session Initiation) sẽ được sử dụng để hỗ trợ các thiết bị sử dụng mạng thoại chuyển mạch kênh. Giao thức với ISUP đóng gói) đã được sử dụng để kiểm soát việc truyền các cuộc gọi thoại từ mạng chuyển mạch chuyển mạch thông th
[Xem chi tiết: Hộp NAS tốt nhất cho truyền thông và sao lưu phương tiện truyền thông]
Tập đoàn Brocade Communications Systems dự định mua lại Foundry Networks trị giá 3 tỉ đô la Mỹ là một động thái chiến lược quan trọng trong một cuộc chiến tranh về sản xuất bia ở Trung Quốc. quý 4, sẽ kết hợp một nhà sản xuất thiết bị chuyển mạch SAN (mạng lưu trữ mạng) của Fibre Channel cho các trung tâm dữ liệu và một chuyên gia về mạng LAN Ethernet của doanh nghiệp, hai công nghệ đang hướng tới sự sáp nhập của chính nó.
Tương lai của các trung tâm dữ liệu nằm ở Ethernet , bởi vì nó tương đối rẻ tiền, giữ quy mô lên đến tốc độ cao hơn và phổ biến trong suốt các mạng doanh nghiệp còn lại, các nhà phân tích nói. Ảo hóa và hợp nhất trung tâm dữ liệu đang giúp thúc đẩy nhu cầu về tốc độ phát triển của Ethernet. Ý tưởng là tạo ra một "sợi thống nhất" mở rộng cả trung tâm dữ liệu tại lõi của doanh nghiệp và mạng LAN, nơi có hệ thống khách hàng. Cả hai Brocade và Cisco đang đẩy FCoE (Fibre Channel over Ethernet), một t
Ba gói chơi cáp, internet, và điện thoại đường dây là giá vé tiêu chuẩn cho bất kỳ công ty cáp, nhưng Cox đang tìm cách để bắt những thứ lên. Cox đang làm việc để xây dựng mạng lưới riêng cho việc sử dụng điện thoại di động, nhưng ban đầu mạng sẽ được dựa trên mối quan hệ hợp tác với Sprint. Điều đó có nghĩa là khách hàng của Cox sẽ có quyền truy cập vào mạng 3G của Sprint. Báo cáo của USA Today cũng chỉ ra rằng Cox cũng đang thử nghiệm các công nghệ mạng 4G, mặc dù không có bất kỳ thông tin nào
Về mặt tiện lợi, đây là một lợi thế lớn . Có tất cả các dịch vụ của bạn trên một hóa đơn giúp mọi thứ dễ dàng hơn trong việc quản lý. Cũng có một thực tế là Cox đang lên kế hoạch cho các tính năng như sử dụng điện thoại di động của bạn để ghi chương trình DVR của bạn trong khi bạn đang đi, điều này sẽ rất hữu ích. Tuy nhiên, có một số vấn đề có thể xảy ra khi có tất cả các dịch vụ của bạn trên một hóa đơn. Các dịch vụ nhiều hơn là trên một dự luật đơn giản, nó là dễ dàng hơn cho một công ty để s







