1. Kiểm tra trong Bash shell
Việc kiểm tra trong Bash shell được thực hiện bằng cấu trúc
[ condition ]
Cấu trúc trên sẽ trả về 1 trong 2 kết quả:
- True => nếu condition đúng
- False => nếu condition sai
2. if, if-else
if và if-else là các cấu trúc điều khiển luồng làm việc của chương trình, chúng thường được gọi là các cấu trúc điều kiện, tức là ứng với từng điều kiện thì chúng ta sẽ thực thi khối chương trình tương ứng cho điều kiện đó, trong trường hợp này chúng ta có 2 điều kiện là đúng (TRUE) và sai (FALSE). Cấu trúc if và if – else
if condition; then commands; fi
Nếu condition đúng thì thực hiện commands.
if condition; then commands_01; else commands_02; fi
Nếu condition đúng thì thực hiện commands_01, ngược lại, nếu condition sai thì thực hiện commands_02. Chúng ta có thể sử dụng 2 cấu trúc if và if else lồng vào nhau như sau:
if condition; then commands; else if condition; then commands; else commands; fi
Trong thực tế chúng ta thường kết hợp 2 cấu trúc kiểm tra và điều kiện vào nhau để thực hiện việc kiểm tra và thực thi luồng xử lý như sau:
if [ condition ]; then commands; fi
và
if [ condition ]; then commands; else commands; fi
Hoặc chúng ta có thể viết ở dạng ngắn gọn như sau:
- [ condition ] && action => thực hiện nếu điều kiện condition là đúng (TRUE).
- [ condition ] || action => thực hiện nếu điều kiện condition là sai (FALSE).
Với && là phép toán luận lý AND và || là phép toán luận lý OR.
3. So sánh số học
Sử dụng các phép toán so sánh số học dưới đây bên trong cấu trúc kiểm tra [] ở phần 1.
- -eq => Bằng nhau (Equal)
- -ne => Không bằng nhau (Not equal)
- -lt => Nhỏ hơn (Less than)
- -gt => Lớn hơn (Greater than)
- -le => Nhỏ hơn hoặc bằng (Less or equal)
- -ge => Lớn hơn hoặc bằng (Greater or equal)
vd:
var=10 [ $var -eq 0 ] => FALSE
4. So sánh chuỗi
Sử dụng các cấu trúc sau để thực hiện việc so sánh chuỗi trong Bash shell
- [[ $str1 = $str2 ]] hoặc [[ $str1 == $str2 ]]
Trả về TRUE nếu 2 biến str1 và str2 có nội dung giống nhau. FALSE nếu ngược lại.
- [[ $str1 != $str2 ]]
Trả về TRUE nếu 2 biến str1 và str2 có nội dung giống nhau. FALSE nếu ngược lại.
- [[ $str1 > $str2 ]]
Trả về TRUE nếu srt1 lớn hơn str2 tính theo bảng chữ cái. FALSE nếu ngược lại.
vd:
str1="HELLO" str2="Hello" [[ $str1 > $str2 ]] =>TRUE
- [[ $str1 < $str2 ]]
Trả về TRUE nếu srt1 nhỏ hơn str2 tính theo bảng chữ cái. FALSE nếu ngược lại.
- [[ -z $str1 ]]
Trả về TRUE nếu $str1 là 1 chuỗi rỗng. FALSE nếu ngược lại
- [[ -n $str1 ]]
Trả về TRUE nếu $str1 là 1 chuỗi khác rỗng. FALSE nếu ngược lại.
Lưu ý:
- Khi sử dụng dấu =, nếu trước và sau nó không có khoảng trắng thì khai báo đó sẽ được hiểu là phép gán.
vd:
var=”value”
- Ngược lại, nếu trước và sau dấu = có khoảng trắng, thì khai báo đó được hiểu là phép so sánh
vd:
$var = “value”
5. Kiểm tra hệ thống tập tin
Sử dụng các phép toán kiểm tra hệ thống tập tin dưới đây bên trong cấu trúc kiểm tra [] ở phần 1.
- [ -f $file_var]
Trả về TRUE nếu file_var là 1 tập tin.
- [ -x $var ]
Trả về TRUE nếu var là tập tin và có quyền thực thi (executable)
- [ -d $var ]
Trả về TRUE nếu var là 1 thư mục.
- [ -e $var ]
Trả về TRUE nếu var tồn tại
- [ -w $var ]
Trả về TRUE nếu var là 1 tập tin và có quyền ghi (writable)
- [ -r $var ]
Trả về TRUE nếu var là 1 tập tin và có quyền đọc (readable)
- [ -L $var ]
Trả về TRUE nếu var là 1 liên kết mềm (symlink)
vd:
fpath="/etc/passwd" if [ -e $fpath ]; then echo File exists; else echo Does not exist; fi
6. Kết hợp nhiều phép kiểm tra với nhau
Chúng ta có thể kết hợp nhiều điều kiện kiểm tra với nhau bằng việc sử dụng các toán tử luận lý gồm:
- AND hoặc && => Trả về TRUE khi tất cả các điều kiện đều thỏa
vd:
str1="Not empty " str2="" if [[ -n $str1 ]] && [[ -z $str2 ]]; then echo TRUE fi
- OR hoặc || => Trả về TRUE khi 1 trong các điều kiện thỏa
vd:
str1="Not empty " if [[ -n $str1 ]] || [[ -z $str1 ]]; then echo TRUE fi
Chúng ta hoàn thành bài tìm hiểu về các so sánh và kiểm tra trong Bash shell tại đây. Chúc các bạn thành công!
0 Comments
Vài lời muốn nói:
* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.
* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.
* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.