Trong bài viết này, hãy cùng TTnguyen tìm hiểu về vòng lặp trong shell script và cấu trúc rẽ nhánh if, select. Có ba loại vòng lặp là: for, while và until.
Xem thêm:
một số toán tử trong shell script
1. Câu lệnh if
Cú pháp:
if điều_kiện then câu lệnh 1 ... fi
Câu lệnh 1 được thực hiện khi điều_kiện là đúng hoặc trạng thái kết thúc của điều_kiện.
Ví dụ 1:
Chúng ta khai báo một biến age có giá trị là 18. Sử dụng câu lệnh if để kiểm tra xem giá trị của age có lớn hơn hoặc bằng 18 không.
- Nếu điều kiện đúng (exit code là 0), câu lệnh trong khối then sẽ được thực hiện, in ra thông báo “Bạn đã đủ tuổi để bỏ phiếu.”
- Ngược lại, nếu điều kiện sai, câu lệnh trong khối else sẽ được thực hiện, in ra thông báo “Bạn chưa đủ tuổi để bỏ phiếu.”
#!/bin/bash # Gán giá trị cho biến age=18 # Sử dụng câu lệnh if để kiểm tra điều kiện if [ $age -ge 18 ] then echo "Bạn đã đủ tuổi để bỏ phiếu." else echo "Bạn chưa đủ tuổi để bỏ phiếu." fi
Ví dụ 2: Chúng ta sử dụng [ -e “example.txt” ] để kiểm tra xem tập tin có tên “example.txt” có tồn tại hay không.
- Nếu tập tin tồn tại, câu lệnh trong khối then sẽ được thực hiện và in ra thông báo “Tập tin tồn tại.”
- Ngược lại, nếu tập tin không tồn tại, câu lệnh trong khối else sẽ được thực hiện và in ra thông báo “Tập tin không tồn tại.”
#!/bin/bash # Kiểm tra xem tập tin "example.txt" có tồn tại hay không if [ -e "example.txt" ] then echo "Tập tin tồn tại." else echo "Tập tin không tồn tại." fi
2. Câu lệnh if…else…if
Cú pháp:
if điều_kiện then câu_lệnh_1 .... else câu_lệnh_2 fi
Ví dụ:
#!/bin/bash # Gán giá trị cho biến number=-5 # Sử dụng câu lệnh if-elif-else để kiểm tra điều kiện if [ $number -gt 0 ] then echo "Số $number là số dương." elif [ $number -lt 0 ] then echo "Số $number là số âm." else echo "Số $number là số không." fi
3. Cấu trúc Select
Cú pháp:
select variable in danh_sách do # Các câu lệnh sẽ được thực hiện dựa trên lựa chọn của người dùng # ... done
Ví dụ sử dụng select để tạo một menu đơn giản với các tùy chọn “Đỏ,” “Xanh,” và “Vàng”:
#!/bin/bash echo "Chọn một màu:" options=("Đỏ" "Xanh" "Vàng") select color in "${options[@]}" do case $color in "Đỏ") echo "Bạn đã chọn màu Đỏ." ;; "Xanh") echo "Bạn đã chọn màu Xanh." ;; "Vàng") echo "Bạn đã chọn màu Vàng." ;; *) echo "Lựa chọn không hợp lệ. Vui lòng chọn lại." ;; esac break done
4. Vòng lặp For
Vòng lặp for được sử dụng khi biết trước số lần lặp cụ thể.
Cú pháp:
for variable in danh_sách do # Câu lệnh sẽ được thực hiện cho mỗi phần tử trong danh sách # ... done
Ví dụ:
#!/bin/bash echo "Kieu 1" for i in 1 2 3 4 5 do echo "In i lan $i" done #-------- echo "Kieu 2" for((j = 1; j <= 5; j++)) do echo "In i lan $j" done #-------- echo "Kieu 3" for k in {1..5} do echo "In i lan $k" done #-------- echo "Kieu 3" # Danh sách các tên ten_list=("Phuong Anh" "Kieu Oanh" "Trieu Vy") # Sử dụng cấu trúc for để lặp qua danh sách và hiển thị từng tên for ten in "${ten_list[@]}" do echo "Xin chào, $ten!" done
5. Vòng lặp While
Vòng lặp while được sử dụng khi muốn lặp cho đến khi một điều kiện nào đó không còn đúng.
Cú pháp:
while [ điều_kiện ] do # Các câu lệnh sẽ được thực hiện trong khi điều_kiện là đúng # ... done
Ví dụ: sử dụng cấu trúc while để đếm từ 1 đến 5:
- Biến i được khởi tạo với giá trị là 1.
- Cấu trúc while [ $i -le 5 ] sử dụng biểu thức điều kiện để kiểm tra xem i có nhỏ hơn hoặc bằng 5 không.
- Câu lệnh echo trong khối do sẽ in ra màn hình giá trị của i.
- Biến i được tăng giá trị sau mỗi lần lặp để tránh lặp vô hạn.
#!/bin/bash # Khởi tạo biến đếm i=1 # Sử dụng cấu trúc while để lặp qua các số từ 1 đến 5 while [ $i -le 5 ] do echo "Số: $i" # Tăng biến đếm i=$((i+1)) done
FS_NUM=1 grep xfs /etc/fstab | while read FS MP REST do echo "${FS_NUM}: file system: ${FS}" echo "${FS_NUM}: mount point: ${MP}" ((FS_NUM++)) done
while true do read -p "1: Show disk usage. case "SCHOICE" in 2: Show uptime. CHOICE case "$CHOICE" in 1) df -h ;; 2) uptime ;; *) break ;; esac done
6. Vòng lặp Until
Cú pháp:
until [ điều_kiện ] do # Các câu lệnh sẽ được thực hiện trong khi điều_kiện là sai # ... done
Ví dụ: sử dụng until để đếm cho đến khi biến đếm trở thành 5:
#!/bin/bash i=1 until [ $i -eq 6 ] do echo "Số: $i" i=$((i+1)) done
Qua bài viết này, chúng ta đã cùng tìm hiểu về vòng lặp trong ShellScript. Với khả năng lặp lại một quy trình hay một tác vụ trong quá trình làm việc tự động, vòng lặp trong ShellScript giúp tối ưu hóa công việc, tiết kiệm thời gian và nâng cao hiệu suất làm việc. Cảm ơn bạn đã tham khảo quản trị linux trên ttnguyen.net.
Bài viết liên quan: