Vòng lặp for
Thuộc phần Kiến thức cơ bản trong hành trình Terminal của Coddy. Bài học 71 trên 82.
Đôi khi bạn cần lặp lại một hành động nhiều lần. Thay vì viết đi viết lại cùng một lệnh, bạn có thể dùng vòng lặp for để duyệt qua danh sách các mục và thực hiện một hành động với từng mục.
Đây là cấu trúc cơ bản của vòng lặp for trong Bash:
#!/bin/bash
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneĐoạn script này in ra lời chào cho từng tên trong danh sách. Biến name lần lượt nhận từng giá trị: đầu tiên là "Alice", sau đó là "Bob", rồi đến "Charlie". Từ khóa do đánh dấu phần bắt đầu của thân vòng lặp, còn done kết thúc vòng lặp.
Vòng lặp for đặc biệt hữu ích khi kết hợp với ký tự đại diện. Bạn có thể lặp qua tất cả các tệp trong một thư mục:
#!/bin/bash
for file in *.txt; do
echo "Processing $file"
doneĐoạn này lặp qua mọi tệp .txt trong thư mục hiện tại. Ở mỗi lần lặp, biến file chứa tên tệp hiện tại, giúp bạn tự động thực hiện thao tác trên từng tệp.
Bạn cũng có thể lặp qua một dãy số bằng cách mở rộng dấu ngoặc nhọn:
#!/bin/bash
for i in {1..5}; do
echo "Number: $i"
doneLệnh này in ra các số từ 1 đến 5. Vòng lặp for giúp rút gọn các tác vụ lặp đi lặp lại thành vài dòng code, giúp tập lệnh chạy hiệu quả hơn và dễ bảo trì hơn.
Thử thách
DễTạo một tập lệnh shell có tên countdown.sh dùng vòng lặp for để in ra số đếm ngược từ 5 đến 1.
Tập lệnh của bạn cần:
- Bắt đầu bằng dòng shebang (
#!/bin/bash) - Dùng vòng lặp for với phép mở rộng dấu ngoặc nhọn để lặp qua các số từ 5 giảm dần đến 1
- In từng số trên một dòng riêng theo định dạng:
Countdown: [number]
Đặt tập lệnh thành tệp có thể thực thi rồi chạy. Đầu ra cần là:
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1Gợi ý: Dùng
{5..1}để tạo một dãy giảm dần. Bên trong vòng lặp, dùngecho "Countdown: $i", trong đóilà biến vòng lặp.
Tự làm thử
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức cơ bản
4Thư mục
Tạo thư mụcSao chép thư mụcDi chuyển và đổi tên thư mụcXóa thư mụcÔn tập: thao tác với thư mục7Nội dung tệp
Head và tailĐếm từLệnh sortLệnh uniqueCơ bản về grepGrep với các cờÔn tập: Thám tử văn bản13Cơ bản về viết tập lệnh shell
Tập lệnh shell là gìTạo và chạy tập lệnhBiến trong tập lệnhĐầu vào của người dùng trong tập lệnhCâu lệnh ifVòng lặp forVòng lặp whileÔn tập: đoán số2Điều hướng
In đường dẫn thư mục hiện tạiLiệt kê tệpChuyển thư mụcĐường dẫn tuyệt đối và tương đốiThư mục chính và thư mục gốcÔn tập: tìm đường8Chuyển hướng
Đầu ra chuẩnGhi đè vào tệpGhi thêm vào tệpĐầu vào chuẩnLỗi chuẩnÔn tập: Công cụ tạo nhật ký6Ký tự đại diện và mẫu
Ký tự đại diện dấu saoKý tự đại diện dấu hỏiKý tự đại diện trong ngoặc vuôngKết hợp ký tự đại diệnÔn tập: thao tác có chọn lọc9Đường ống
Đường ống là gìNối hai lệnh bằng đường ốngNối nhiều lệnh bằng đường ốngDùng đường ống với grepÔn tập: luồng xử lý dữ liệuTự luyện tập: Playground Terminal