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

Một trong những thủ thuật cơ bản nhất khi viết kịch bản lệnh bash liên quan đến việc tạo vòng lặp để bạn có thể thực hiện một tác vụ nào đó được thực hiện tự động nhiều lần. Cuối cùng, vòng lặp sẽ đạt đến một điều kiện thử nghiệm được xác định trước và đột nhiên ngừng thực hiện. 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í cả 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ữ bất kỳ quá trình nào sẽ mất bất kỳ khoảng thời gian nào bạn muốn. Trong khi chúng tôi sẽ viết một số vòng cực kỳ đơn giản, bạn có thể sử dụng những kỹ năng này để viết bất kỳ loại kịch bản nào bạn muốn.

Có nhiều cách để bắt đầu viết kịch bản, nhưng đối với cuộc thảo luận này, chúng tôi giả định rằng bạn đã mở lời 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 giữ phím 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 là trình soạn thảo, vấn đề trong đó trình soạn thảo để sử dụng là khá cá nhân và bạn có thể làm việc với bất cứ điều 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 cho đến. Nó sẽ tiếp tục thực hiện các lệnh cho đến khi điều kiện thử nghiệm bạn đặt thành true. Giả sử bạn đã sử dụng nano hoặc vi để mở một tệp không tồn tại được gọi là until.sh và sẵn sàng chèn văn bản mới vào nó. Chúng tôi sẽ chỉ làm một cái gì đó mà đếm đến 20 trong thiết bị đầu cuối của bạn để giữ điều này dễ dàng lúc đầu.

Bắt đầu bằng cách gõ như 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, sau đó lưu nó bằng cách giữ phím Ctrl và sau đó đẩy O và cuối cùng là X để thoát. Người dùng vi sẽ muốn đẩy thoát rồi gõ: wq để lưu và thoát.

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

Nhân tiện, dòng đầu tiên cho biết môi trường của bạn 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 bạn chỉ nên sử dụng #! / Bin / sh để đảm bảo rằng kịch bản của bạn tuân thủ các tiêu chuẩn POSIX nhất định, nhưng những script đơn giản này không có bất kỳ vấn đề nào đang 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

Một vòng lặp for sẽ xem xét mọi mục trong một danh sách đã cho và sau đó thực hiện một tập lệnh đã cho trên danh sách đó. Chúng tôi sẽ làm cho một trong đó in ra một số tên hệ điều hành nhưng hãy nhớ lại 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 vi forLoop tại dấu nhắc lệnh và bắt đầu nhập tập lệnh sau đây. Người dùng vi sẽ phải nhập 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

Mẹo CHUYÊN NGHIỆP: Nếu vấn đề xảy ra với máy tính của bạn hoặc máy tính xách tay / máy tính xách tay, bạn nên thử sử dụng phần mềm Reimage Plus có thể quét các kho lưu trữ và thay thế các tệp bị hỏng và bị thiếu. Điều này làm việc trong hầu hết các trường hợp, nơi vấn đề được bắt nguồn do một tham nhũng hệ thống. Bạn có thể tải xuống Reimage Plus bằng cách nhấp vào đây

Lưu tệp một lần nữa bằng cách sử dụng Ctrl + O và sau đó nhấn Ctrl + X trong nano hoặc Esc sau đó: phương thức wq trong vi trước khi phát lệnh chmod + x forLoop để làm cho nó thực thi. Khi bạn đã có, hãy chạy nó bằng cách gõ ./forLoop tại dấu nhắc. Vòng lặp for buộc lệnh echo hoạt động trên mỗi mục trong biến số lần lượt. Bạn có thể, một lần nữa, 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 while

Bắt đầu chỉnh sửa tệp thứ ba được gọi là 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 muốn sử dụng trình soạn thảo văn bản đồ họa, thì bạn có thể thực sự làm điều đó với bất kỳ dự án nào miễn là bạn đảm bảo đặt tệp trong cùng một 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 trình soạn thảo văn bản của bạn. Khi bạn đã thoát, sau đó đưa ra lệnh chmod + x whileLoop để cho phép bạn thực thi nó và sau đó chạy ./whileLoop để chạy nó. Bạn sẽ thấy cùng một đầu ra xuất phát từ kịch bản lệnh forLoop từ phương thức đầu tiên khi nó đếm từ 0 đến 20 trong nhiều hơn một giây.

Đây là một minh chứng tuyệt vời về thực tế rằng có nhiều cách để làm mọi thứ bất cứ khi nào bạn đang làm việc với các vòng trong thời trang này. Mặc dù về mặt kỹ thuật không có cách nào để làm như vậy, bạn có thể gặp các tác giả kịch bản cho rằng bạn nên viết kịch bản gần hơn với cách ngôn ngữ lập trình C thực hiện mọi thứ hoặc cách khác, những người khác có thể khuyên 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 chính xác để giải quyế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.

Mẹo CHUYÊN NGHIỆP: Nếu vấn đề xảy ra với máy tính của bạn hoặc máy tính xách tay / máy tính xách tay, bạn nên thử sử dụng phần mềm Reimage Plus có thể quét các kho lưu trữ và thay thế các tệp bị hỏng và bị thiếu. Điều này làm việc trong hầu hết các trường hợp, nơi vấn đề được bắt nguồn do một tham nhũng hệ thống. Bạn có thể tải xuống Reimage Plus bằng cách nhấp vào đây

Facebook Twitter Google Plus Pinterest