Cách sử dụng BASH cho Vòng lặp



Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề

Một trong những thủ thuật cơ bản nhất khi tạo tập lệnh bash liên quan đến việc tạo một vòng lặp để bạn có thể thực thi một nhiệm vụ nhất định tự động nhiều lần. Cuối cùng, vòng lặp sẽ đạt đến điều kiện kiểm tra định trước và đột ngột ngừng thực thi. Các vòng lặp như thế này sẽ hoạt động hoàn hảo trong bash trên Linux và macOS cũng như bash shell bên trong Windows 10 và thậm chí là các shell khác nhau trong FreeBSD. Đương nhiên, bạn có thể viết bất kỳ lệnh nào bạn muốn trong bất kỳ vòng lặp nào và giữ cho mọi quy trình diễn ra trong khoảng thời gian bạn muốn. Mặc dù chúng tôi sẽ viết một số vòng lặp cực kỳ đơn giản nhưng bạn có thể sử dụng những kỹ năng này để tạo bất kỳ loại tập lệnh nào bạn muốn.



Có nhiều cách để bắt đầu viết một tập lệnh, nhưng đối với cuộc thảo luận này, chúng tôi sẽ giả định rằng bạn đã mở một dấu nhắc lệnh bằng cách tìm kiếm thiết bị đầu cuối trên Dash, bằng cách nhấp vào nó trong menu KDE, MATE, LX hoặc Whisker hoặc bằng cách nhấn và giữ Ctrl, Alt và T cùng một lúc. Trong khi chúng ta sẽ thảo luận về vi / vim và nano với tư cách là trình chỉnh sửa, vấn đề sử dụng trình chỉnh sửa nào là khá cá nhân và bạn có thể làm việc với bất kỳ thứ gì bạn cảm thấy thoải mái.



Phương pháp 1: Vòng lặp cho đến khi

Có lẽ vòng lặp cơ bản nhất trong bash là vòng lặp Until. Nó sẽ tiếp tục thực hiện các lệnh cho đến khi điều kiện kiểm tra bạn đặt trở thành đúng. Chúng tôi sẽ giả sử bạn đã sử dụng nano hoặc vi để mở một tệp không tồn tại có tên là Until.sh và sẵn sàng chèn văn bản mới vào đó. Chúng tôi sẽ chỉ làm một cái gì đó đếm đến 20 trong thiết bị đầu cuối của bạn để giữ cho việc này dễ dàng lúc đầu.



Bắt đầu bằng cách nhập nội dung sau:

#! / bin / bash

n = 0



cho đến [$ n -gt 20]

làm

echo $ n

((n ++))

làm xong

Nếu bạn đang sử dụng nano, hãy lưu nó bằng cách giữ Ctrl rồi nhấn O và cuối cùng là X để thoát. Người dùng vi sẽ muốn đẩy thoát thì gõ: wq để lưu và thoát.

Loại tiếp theo chmod + x cho đến khiLoop tại dấu nhắc để làm cho nó có thể thực thi và sau đó nhập ./untilLoop để chạy nó. Khi nó chạy, vòng lặp sẽ tiếp tục in các số mới trên thiết bị đầu cuối của bạn cho đến khi biến n lên 20.

Nhân tiện, dòng đầu tiên cho môi trường của bạn biết trình bao nào sẽ tải lên khi làm việc với các tập lệnh này. Một số lập trình viên khuyên chỉ nên sử dụng #! / Bin / sh để đảm bảo rằng tập lệnh của bạn tuân thủ các tiêu chuẩn POSIX nhất định, nhưng những tập lệnh đơn giản này sẽ không gặp bất kỳ vấn đề gì khi chạy trên phần lớn các hệ thống hiện đại.

Phương pháp 2: Vòng lặp for

Vòng lặp for xem xét mọi mục trong một danh sách nhất định và sau đó thực hiện một nhóm lệnh nhất định trong danh sách đó. Chúng tôi sẽ tạo một cái in ra một số tên hệ điều hành nhưng xin lưu ý một lần nữa rằng bạn có thể làm bất cứ điều gì với điều này nếu bạn muốn.

Nhập một trong hai nano forLoop hoặc là chúng tôi forLoop tại dấu nhắc lệnh và bắt đầu nhập tập lệnh sau. Người dùng vi sẽ phải vào chế độ chèn trước khi họ làm như vậy.

#! / bin / bash

unices = ’GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix’

cho unix trong $ unices

làm

echo $ unix

làm xong

Lưu tệp lại bằng cách sử dụng Ctrl + O và Ctrl + X trong nano hoặc Esc then: wq method trong vi trước khi ra lệnh chmod + x forLoop để làm cho nó có thể thực thi được. Sau khi bạn có, hãy chạy nó bằng cách nhập ./forLoop tại dấu nhắc. Vòng lặp for buộc lệnh echo lần lượt hoạt động trên từng mục trong biến unices. Một lần nữa, bạn có thể thay thế danh sách đó bằng bất kỳ đối số nào và thay thế echo bằng bất kỳ lệnh nào để tự động hóa các quy trình dài.

Phương pháp 3: Vòng lặp trong khi

Bắt đầu chỉnh sửa tệp thứ ba có tên whileLoop bằng nano, vi hoặc bất kỳ trình chỉnh sửa nào khác mà bạn muốn sử dụng. Nếu bạn thích sử dụng trình soạn thảo văn bản đồ họa, thì bạn thực sự có thể làm điều đó với bất kỳ dự án nào trong số này miễn là bạn đảm bảo đặt tệp vào cùng thư mục mà bạn đang làm việc từ bên trong dấu nhắc lệnh .

Bên trong tệp này, bạn sẽ muốn thêm các dòng:

#! / bin / bash

n = 0

trong khi [$ n -le 20]

làm

echo $ n

((n ++))

làm xong

Lưu tệp giống như cách bạn đã lưu các tệp khác và sau đó thoát khỏi trình soạn thảo văn bản của bạn. Sau khi bạn đã thoát, hãy ra lệnh chmod + x whileLoop để cho phép bạn thực thi nó và sau đó chạy ./trong khi lặp lại để chạy nó. Bạn sẽ thấy cùng một đầu ra xuất phát từ tập lệnh UntilLoop từ phương thức đầu tiên vì nó được tính từ 0 đến 20 trong nhiều khả năng là một tích tắc.

Đây là một minh chứng xuất sắc về thực tế rằng có nhiều cách để thực hiện bất cứ khi nào bạn làm việc với các vòng lặp theo kiểu này. Mặc dù về mặt kỹ thuật, không có cách nào sai để làm như vậy, nhưng có thể bạn sẽ gặp các tác giả tập lệnh tuyên bố rằng bạn nên viết các tập lệnh của mình gần với cách ngôn ngữ lập trình C thực hiện hoặc cách khác, những người khác có thể đề xuất rằng bạn không nên làm điều này. Thành thật mà nói, có lẽ có nhiều cách đúng để giải quyết một vấn đề.

Hãy xóa các tập lệnh của bạn sau khi bạn đã thực hành xong với chúng.

3 phút đọc