Trong bài này chúng ta sẽ tìm hiểu đến lệnh if else, đây là lệnh rẻ nhánh chương trình và được sử dụng rất thường xuyên khi lập trình shell script. Ngoài lệnh if else ra ta còn có lệnh case, nhưng chúng ta sẽ tìm hiểu nó ở bài tiếp theo.
1. Lệnh if then fi
Trong shell cú pháp hơi dài dòng, tựa như pascal vậy :3 nếu bạn từng sử dụng PHP hay C/C++ thì sẽ thấy cú pháp rất đơn giản, nhưng qua shell script thì sẽ hơi khó nhớ.
if [ expression ] then # Thực hiện lệnh nếu expression true fi
Bài viết này được đăng tại [kiso.vn]
Shell sẽ kiểm tra điều kiện đầu vào expression
có giá trị true hay false, nếu true thì thực thi chương trình bên trong lệnh then
, sau đó kết thúc tại lệnh fi
.
Bạn cần chú ý tới khoảng trắng nhé, đó là phần bắt buộc nên phải có khoảng trắng đầy đủ, nếu không chương trình sẽ biên dịch sai hoặc bị lỗi.
Điều kiện expression
có thể là một giá trị, cũng có thể là một biểu thức, nhưng chung quy lại biểu thức này phải trả về kết quả là true hoặc false.
#!/bin/sh a=10 b=20 if [ $a == $b ] then echo "a bằng b" fi if [ $a != $b ] then echo "a khác b" fi
a is not equal to b
Trong ví dụ này bạn sẽ thấy do $a khác $b nên lệnh if
thứ hai sẽ được thực thi, còn lệnh thứ nhất thì không vì $a không bằng $b.
2. Lệnh if else fi
Ở phần 1 là lệnh rẻ nhánh đơn, nghĩa là nó chỉ chạy đúng một hướng là điều kiện expression
trả về true, còn false thì không làm gì cả. Nếu bạn muốn expression
trả về false sẽ thực hiện một chương trình khác thì có thể kết hợp thêm lệnh else.
if [ expression ] then Chạy nếu expression true else Chạy nếu expression false fi
Với chương trình này thì chương trình sẽ rẻ sang hai hướng và phụ thuộc vào biểu thức expression.
#!/bin/sh a=10 b=20 if [ $a == $b ] then echo "a bằng b" else echo "a khác b" fi
a khác b
3. Lệnh if elif fi
Ở phần 2 ta đã tìm hiểu lệnh rẻ chương trình thành hai nhánh, vậy thì trong phần này ta sẽ tìm hiểu rẻ nhiều hơn hai nhánh, có thể là 3 nhánh, 4 nhánh, … bằng cách sử dụng kết hợp thêm lệnh elif.
if [ expression 1 ] then Chạy nếu expression1 đúng elif [ expression 2 ] then Chạy nếu expression2 đúng elif [ expression 3 ] then Chạy nếu expression3 đúng else Chạy nếu cả 3 biểu thức trên sai fi
Bạn có thể tạo nhiều hơn 3 nhánh và điều này phụ thuộc vào chương trình mà bạn muốn viết.
#!/bin/sh a=10 b=20 if [ $a == $b ] then echo "a bằng b" elif [ $a -gt $b ] then echo "a lớn hơn b" else echo "a nhỏ hơn b" fi
Chạy chương trình này lên bạn sẽ thấy kết quả là:
a nhỏ hơn b
4. Lời kết
Nếu bạn đã rành một ngôn ngữ nào đó rồi thì sẽ rất dễ học shell script, bởi bản chất nó cũng là lập trình nên chỉ khác nhau về cú pháp, về tư duy thì giống nhau hoàn toàn.
Bài này mình đã giới thiệu xong lệnh if trong shell script, bài tiếp theo ta sẽ nói về lệnh case.
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chính1. Lệnh if then fi2. Lệnh if else fi3....
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chính1. Lệnh if then fi2. Lệnh if else fi3. Lệnh if elif fi4. Lời kết1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một bộ ứng dụng hoạt động trên Linux như một...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chính1. Lệnh if then fi2. Lệnh if else fi3. Lệnh if elif fi4. Lời kếtV. Phân tích và khai thác các lỗ hổng Directory traversal (tiếp) 5. Bypass lỗ hổng khi trang web...
Directory traversal vulnerabilities (phần 3)
Nội dung chính1. Lệnh if then fi2. Lệnh if else fi3. Lệnh if elif fi4. Lời kếtV. Phân tích và khai thác các lỗ hổng Directory traversal 1. Lỗ hổng xảy ra khi sử dụng...
Directory traversal vulnerabilities (phần 2)
Nội dung chính1. Lệnh if then fi2. Lệnh if else fi3. Lệnh if elif fi4. Lời kếtIII. Vì sao lỗ hổng Directory traversal xuất hiện? Với mỗi ngôn ngữ lập trình khác nhau, điểm xuất...