Vòng lặp while
Thuộc phần Kiến thức cơ bản trong hành trình Terminal của Coddy. Bài học 72 trên 82.
Vòng lặp for rất hữu ích khi bạn biết chính xác những mục cần lặp qua. Nhưng nếu bạn muốn tiếp tục lặp cho đến khi một điều kiện nào đó thay đổi thì sao? Đó là lúc vòng lặp while phát huy tác dụng.
Vòng lặp while tiếp tục chạy miễn là điều kiện vẫn đúng. Đây là cấu trúc cơ bản:
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count + 1))
doneScript này in ra các số từ 1 đến 5.
Vòng lặp (loop) kiểm tra xem count có nhỏ hơn hoặc bằng 5 không. Nếu đúng, vòng lặp chạy phần thân, tăng biến đếm bằng $((...)) để tính toán số học, rồi kiểm tra lại.
Khi count đạt đến 6, điều kiện trở thành sai và vòng lặp dừng lại.
Vòng lặp while rất phù hợp khi bạn chưa biết trước mình cần bao nhiêu lần lặp. Ví dụ, bạn có thể tiếp tục yêu cầu đầu vào cho đến khi người dùng nhập "quit":
#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
read -p "Enter command (quit to exit): " input
echo "You entered: $input"
doneHãy cẩn thận với vòng lặp while. Nếu điều kiện không bao giờ trở thành sai, vòng lặp sẽ chạy mãi.
Luôn đảm bảo có thứ gì đó bên trong vòng lặp cuối cùng sẽ thay đổi điều kiện, chẳng hạn như tăng bộ đếm hoặc cập nhật biến dựa trên đầu vào của người dùng.
Thử thách
DễTạo một shell script có tên counter.sh sử dụng vòng lặp while để in các số từ 1 đến 4.
Script của bạn cần:
- Bắt đầu bằng dòng shebang (
#!/bin/bash) - Tạo một biến có tên
numvới giá trị ban đầu là1 - Dùng vòng lặp while tiếp tục chạy khi
numnhỏ hơn hoặc bằng 4 - Bên trong vòng lặp, in số hiện tại theo định dạng:
Number: [num] - Tăng
numthêm 1 sau mỗi lần lặp bằng cách dùng$((num + 1))
Cho script quyền thực thi rồi chạy nó. Đầu ra của bạn sẽ là:
Number: 1
Number: 2
Number: 3
Number: 4Gợi ý: Dùng
-leđể so sánh “nhỏ hơn hoặc bằng”. Nhớ tăng biến đếm bên trong vòng lặp bằngnum=$((num + 1))để tránh vòng lặp vô hạn. Kết thúc vòng lặp while bằngdone.
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