Bash vs Python для DevOps инженеров и системных администраторов
Mục lục:
- Bash chuẩn cho vòng lặp
- Vòng qua chuỗi
- Lặp lại trên một phạm vi số
- Lặp lại các phần tử mảng
- Vòng lặp Bash theo kiểu C
- Tuyên bố phá vỡ và tiếp tục
- Tuyên bố phá vỡ
- Tiếp tục tuyên bố
- Bash Ví dụ về vòng lặp
- Đổi tên tập tin với khoảng trắng trong tên tệp
- Thay đổi phần mở rộng tập tin
- Phần kết luận
Vòng lặp là một trong những khái niệm cơ bản của ngôn ngữ lập trình. Vòng lặp rất tiện lợi khi bạn muốn chạy một loạt các lệnh nhiều lần cho đến khi đạt được một điều kiện nhất định.
Trong các ngôn ngữ kịch bản như Bash, các vòng lặp rất hữu ích để tự động hóa các tác vụ lặp đi lặp lại.
Có ba cấu trúc vòng lặp cơ bản trong kịch bản Bash, cho vòng lặp, vòng lặp while và cho đến vòng lặp.
Trong hướng dẫn này, chúng tôi sẽ đề cập đến những điều cơ bản về các vòng lặp trong Bash. Chúng tôi cũng sẽ chỉ cho bạn cách sử dụng ngắt và tiếp tục báo cáo để thay đổi luồng của vòng lặp.
Bash chuẩn cho vòng lặp
Vòng lặp for lặp qua danh sách các mục và thực hiện nhóm lệnh đã cho.
Vòng lặp Bash for có dạng sau:
for item in do done
Danh sách có thể là một chuỗi các chuỗi được phân tách bằng dấu cách, một dãy số, đầu ra của một lệnh, một mảng, v.v.
Vòng qua chuỗi
Trong ví dụ bên dưới, vòng lặp sẽ lặp lại qua từng mục trong danh sách các chuỗi và
element
biến sẽ được đặt thành mục hiện tại.
for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done
Vòng lặp sẽ tạo ra đầu ra sau:
Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium
Lặp lại trên một phạm vi số
Bạn có thể sử dụng biểu thức chuỗi để chỉ định một phạm vi số hoặc ký tự bằng cách xác định điểm bắt đầu và điểm kết thúc của phạm vi. Biểu thức trình tự có dạng sau:
{START..END}
Trong ví dụ bên dưới, vòng lặp sẽ lặp qua tất cả các số từ 0 đến 3.
for i in {0..3} do echo "Number: $i" done
Number: 0 Number: 1 Number: 2 Number: 3
Bắt đầu từ Bash 4, cũng có thể chỉ định gia số khi sử dụng phạm vi. Biểu thức có dạng sau:
{START..END..INCREMENT}
for i in {0..20..5} do echo "Number: $i" done
Number: 0 Number: 5 Number: 10 Number: 15 Number: 20
Lặp lại các phần tử mảng
Bạn cũng có thể sử dụng vòng lặp for để lặp qua một mảng các phần tử:
Trong ví dụ dưới đây, chúng tôi đang xác định một
BOOKS
mảng và lặp lại qua từng phần tử của mảng.
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done
Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby
Vòng lặp Bash theo kiểu C
Cú pháp của vòng lặp kiểu C được thực hiện dưới dạng sau:
for ((INITIALIZATION; TEST; STEP)) do done
Phần
INITIALIZATION
được thực hiện một lần khi vòng lặp bắt đầu. Sau đó, phần
TEST
được đánh giá. Nếu nó sai, vòng lặp for bị chấm dứt. Nếu
TEST
là đúng, các lệnh bên trong phần thân của vòng lặp for được thực thi và phần
STEP
được cập nhật.
Trong đoạn mã sau, các vòng lặp sao bằng cách khởi tạo
i = 0
, sau đó trước mỗi lần lặp kiểm tra nếu
i ≤ 10
. Nếu đúng, nó in giá trị hiện tại của
i
và
i
bằng 1 (
i++
) nếu không thì vòng lặp chấm dứt.
for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done
Vòng lặp sẽ lặp lại 1001 lần và tạo ra kết quả sau:
Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000
Tuyên bố phá vỡ và tiếp tục
Các câu lệnh break và continue có thể được sử dụng để kiểm soát việc thực hiện vòng lặp for.
Tuyên bố phá vỡ
Câu lệnh break chấm dứt vòng lặp hiện tại và chuyển điều khiển chương trình sang câu lệnh theo sau câu lệnh kết thúc. Nó thường được sử dụng để chấm dứt vòng lặp khi một điều kiện nhất định được đáp ứng.
Trong ví dụ sau, chúng tôi đang sử dụng câu lệnh if để chấm dứt việc thực hiện vòng lặp một khi mục lặp hiện tại bằng với 'Lithium'.
for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'
Element: Hydrogen Element: Helium All Done!
Tiếp tục tuyên bố
Câu lệnh continue thoát khỏi lần lặp hiện tại của một vòng lặp và chuyển điều khiển chương trình sang lần lặp tiếp theo của vòng lặp.
Trong ví dụ sau, chúng ta đang lặp qua một dãy số và khi mục lặp hiện tại bằng '2', câu lệnh continue sẽ khiến cho việc thực thi trở về đầu vòng lặp và tiếp tục với lần lặp tiếp theo.
for i in {1..5}; do if]; then continue fi echo "Number: $i" done
Number: 1 Number: 3 Number: 4 Number: 5
Bash Ví dụ về vòng lặp
Đổi tên tập tin với khoảng trắng trong tên tệp
Ví dụ sau đây cho thấy cách sử dụng vòng lặp Bash for để đổi tên tất cả các tệp trong thư mục hiện tại bằng một khoảng trắng trong tên của nó bằng cách thay thế khoảng trắng thành dấu gạch dưới.
for file in *\ *; do mv "$file" "${file// /_}" done
Hãy chia nhỏ dòng mã theo từng dòng:
- Dòng đầu tiên tạo một vòng lặp for và lặp qua danh sách tất cả các tệp có khoảng trắng trong tên của nó. Biểu thức
*\ *tạo danh sách. Dòng thứ hai áp dụng cho từng mục của danh sách và di chuyển tệp sang một mục mới thay thế khoảng trắng bằng dấu gạch dưới (_). Phần${file// /_}đang sử dụng mở rộng tham số shell để thay thế một mẫu trong một tham số bằng một chuỗi.donechỉ ra kết thúc của phân đoạn vòng lặp.
Thay đổi phần mở rộng tập tin
Ví dụ sau đây cho thấy cách sử dụng vòng lặp Bash for để đổi tên tất cả các tệp kết thúc bằng.jpeg trong thư mục hiện tại bằng cách thay thế phần mở rộng tệp từ.jpeg thành.jpg.
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done
Hãy phân tích từng dòng mã:
- Dòng đầu tiên tạo một vòng lặp for và lặp qua danh sách tất cả các tệp kết thúc bằng '.jpeg'. Dòng thứ hai áp dụng cho từng mục của danh sách và di chuyển tệp sang một mục mới thay thế '.jpeg' bằng '.jpg'.
${file%.jpeg}để xóa phần '.jpeg' khỏi tên tệp bằng cách mở rộng tham số shelldonecho biết kết thúc phân đoạn vòng lặp.
Phần kết luận
Bây giờ bạn nên hiểu rõ về cách sử dụng bash for loop để lặp qua các danh sách.
thiết bị đầu cuối bash loopYahoo, trong một tuyên bố, cho biết họ đã rất thất vọng khi Google thoát khỏi thỏa thuận. "Yahoo tiếp tục tin tưởng vào lợi ích của thỏa thuận và thất vọng rằng Google đã quyết định rút khỏi thỏa thuận thay vì bảo vệ nó trước tòa", công ty cho biết. "Google đã thông báo cho Yahoo về việc từ chối tiến tới việc thực hiện thỏa thuận sau khi Bộ Tư pháp cho biết sẽ ngăn chặn nó, bất chấp những sửa đổi đề xuất của Yahoo nhằm giải quyết mối quan tâm của DOJ".
Sự tranh cãi về quảng cáo được đề xuất "Sau bốn tháng xem xét, bao gồm các cuộc thảo luận về những thay đổi khác nhau trong thỏa thuận, rõ ràng là các nhà quản lý của chính phủ và một số nhà quảng cáo tiếp tục có những quan ngại về thỏa thuận", David Drummond , Phó chủ tịch cao cấp của Google và là giám đốc pháp lý của Google đã viết trên blog chính sách công cộng của Google. "Việc thúc đẩy quá trình này không chỉ gây ra một cuộc chiến pháp lý kéo dài mà còn gây thiệt hại cho các mối quan hệ với
Dự thảo thứ ba thiết lập giới hạn tiêu thụ năng lượng khi máy chủ đang ở trạng thái nhàn rỗi, cái gì đó chưa được thiết lập trong dự thảo thứ hai. Để có đủ tiêu chuẩn cho biểu trưng Energy Star, các nhà cung cấp phải đáp ứng các yêu cầu tối thiểu về hiệu suất cung cấp điện và công bố một bảng dữ liệu cho mỗi máy chủ cho biết mức năng lượng và hiệu năng của nó cho các cấu hình tối đa, tối thiểu và điển hình. streaming services]
ĐặC tả bao gồm các máy chủ với tối đa bốn ổ cắm bộ xử lý. EPA cho biết họ đã chọn loại trừ các hệ thống phiến khỏi dự thảo vì SPEC cho biết tiêu chuẩn SPECPower_ssj2008 của nó để đo mức tiêu thụ nhàn rỗi không thể chạy trên lưỡi dao. EPA cho biết các đặc điểm kỹ thuật sẽ có hiệu lực vào ngày 1 tháng 2 năm 2009. Một đặc điểm kỹ thuật "Tier 2" toàn diện hơn kế hoạch cho tháng 10 năm 2010 có thể bao gồm các máy chủ với hơn bốn khe.
Nút Quên mới trong Firefox cho phép bạn kiểm soát nhiều hơn quyền riêng tư của mình. Hầu hết các trình duyệt web cho Windows cho phép bạn xóa lịch sử duyệt web nhưng bản cập nhật gần đây cho trình duyệt phổ biến này đã thêm tính năng bảo mật mới tuyệt vời cho phép bạn xóa lịch sử duyệt web của mình ngay lập tức trong một lần nhấp - thậm chí cho phép bạn xác định khoảng thời gian. Nút
Quên







