Cách làm chủ logic có điều kiện trong Bash

Cach Lam Chu Logic Co Dieu Kien Trong Bash



Việc sử dụng logic có điều kiện là một phần rất cần thiết của bất kỳ ngôn ngữ lập trình nào. Logic điều kiện có thể được triển khai trong Bash theo nhiều cách khác nhau để giải quyết các vấn đề lập trình. Các phương pháp sử dụng logic điều kiện trong Bash thông qua các loại câu lệnh “if” và “case” khác nhau để so sánh chuỗi và giá trị số, kiểm tra nội dung biến, kiểm tra sự tồn tại của tệp hoặc thư mục, v.v. được trình bày trong hướng dẫn này .

Danh sách nội dung:

  1. Sử dụng câu lệnh “If”
  2. Sử dụng câu lệnh “If-Else”
  3. Sử dụng câu lệnh “If-Elif-Else”
  4. Sử dụng câu lệnh “If” để kiểm tra một biến trống
  5. Sử dụng câu lệnh “If” với toán tử logic
  6. Sử dụng câu lệnh “If” lồng nhau
  7. Sử dụng câu lệnh “If” để kiểm tra sự tồn tại của tệp
  8. Sử dụng câu lệnh “If” để kiểm tra sự tồn tại của thư mục
  9. Sử dụng câu lệnh “If” với Regex
  10. Sử dụng Tuyên bố “Trường hợp”

Sử dụng câu lệnh “If”

Ví dụ này cho thấy cách sử dụng đơn giản của câu lệnh “if” trong Bash. Sáu loại toán tử so sánh có thể được sử dụng để so sánh các giá trị số trong Bash. Đó là “-eq” (bằng), “-ne” (không bằng), “-le” (nhỏ hơn bằng), “-ge” (lớn hơn bằng), “-lt” (nhỏ hơn) và “ -gt” (lớn hơn). Việc sử dụng “-lt” và “-eq” được hiển thị trong tập lệnh sau cho dù số đó nhỏ hơn 99 hay chưa được kiểm tra bằng toán tử “-lt”. Số chẵn hoặc lẻ và được kiểm tra bởi toán tử “-eq”.







#!/bin/bash

#Gán một giá trị số

( ( con số = năm mươi ) )

#Kiểm tra giá trị số bằng câu lệnh 'if'

nếu như [ số $ -lt 99 ]

sau đó

tiếng vọng 'Số này hợp lệ.'



#Kiểm tra xem số đó có chẵn hay không

nếu như [ $ ( ( số $ % 2 ) ) -eq 0 ]

sau đó

tiếng vọng 'Số là số chẵn.'

đầu ra :



Đầu ra sau xuất hiện sau khi thực thi tập lệnh trước:



  p1





Lên đầu trang

Sử dụng câu lệnh “If-Else”

Việc sử dụng câu lệnh “if-else” được hiển thị trong đoạn script sau. Một giá trị chuỗi được lấy từ người dùng và kiểm tra xem giá trị đó có phải là “BLUE” hay không bằng cách sử dụng câu lệnh “if-else”.



#!/bin/bash

#Lấy giá trị chuỗi từ người dùng

đọc -P 'Nhập màu sắc yêu thích của bạn:' màu sắc

#Kiểm tra giá trị chuỗi bằng câu lệnh 'if-else'

nếu như [ ${màu sắc ^^} == 'MÀU XANH DA TRỜI' ]

sau đó

tiếng vọng 'Được rồi, màu xanh có sẵn.'

khác

tiếng vọng ' $màu không có sẵn.'

đầu ra :

Đầu ra sau xuất hiện sau khi thực thi tập lệnh trước đó nếu “đỏ” được lấy làm đầu vào:

  p2-1

Đầu ra sau xuất hiện sau khi thực thi tập lệnh trước đó nếu lấy “blue” làm đầu vào:

  p2-2

Lên đầu trang

Sử dụng câu lệnh “If-Elif-Else”

Việc sử dụng câu lệnh “if-elif-else” được hiển thị trong đoạn script sau. Một số được lấy từ người dùng và được kiểm tra với các giá trị khác nhau cho đến khi tìm thấy bất kỳ kết quả trùng khớp nào. Nếu tìm thấy bất kỳ kết quả trùng khớp nào, thông báo tương ứng sẽ được in. Nếu không tìm thấy kết quả trùng khớp, thông báo mặc định sẽ được in.

#!/bin/bash

#Lấy giá trị id từ người dùng

đọc -P 'Nhập số sê-ri của bạn:' nối tiếp

#Kiểm tra giá trị đầu vào bằng câu lệnh 'if-elif-else'

nếu như [ $ nối tiếp == '4523' ]

sau đó

tiếng vọng 'Bạn được chọn vào nhóm A.'

Elif [ $ nối tiếp == '8723' ]

sau đó

tiếng vọng 'Bạn được chọn vào nhóm B.'

Elif [ $ nối tiếp == '3412' ]

sau đó

tiếng vọng 'Bạn được chọn vào nhóm C.'

khác

tiếng vọng 'Bạn không được chọn' .

Đầu ra:

Đầu ra sau xuất hiện sau khi thực thi tập lệnh có giá trị 8723:

  p3-1

Đầu ra sau xuất hiện sau khi thực thi tập lệnh có giá trị 9078:

  p3-2

Lên đầu trang

Sử dụng câu lệnh “If” để kiểm tra một biến trống

Phương pháp kiểm tra xem một biến có trống không bằng cách sử dụng câu lệnh “if” được hiển thị trong tập lệnh sau. Tùy chọn “-z” được sử dụng trong câu lệnh “if” để thực hiện tác vụ này.

#!/bin/bash

#Lấy giá trị id từ người dùng

đọc -P 'Nhập số sê-ri của bạn:' nối tiếp

#Kiểm tra xem biến có trống hay không

nếu như [ ! -Với $ nối tiếp ]

sau đó

#Kiểm tra giá trị đầu vào bằng câu lệnh 'if-elif-else'

nếu như [ $ nối tiếp == '690' ]

sau đó

tiếng vọng 'Bạn được chọn vào đội-1.'

Elif [ $ nối tiếp == '450' ]

sau đó

tiếng vọng 'Bạn được chọn vào đội-2.'

khác

tiếng vọng 'Bạn không được chọn' .



khác

tiếng vọng 'Không có số sê-ri nào được đưa ra.'

đầu ra :

Đầu ra sau xuất hiện sau khi thực thi tập lệnh có giá trị 690:

  p4-1

Đầu ra sau xuất hiện sau khi thực thi tập lệnh nếu không có giá trị đầu vào nào được lấy:

  p4-2

Lên đầu trang

Sử dụng câu lệnh “If” với các toán tử logic

Ba loại toán tử logic có thể được sử dụng trong câu lệnh điều kiện Bash. Đây là logic OR (||), logic AND (&&) và logic NOT (!). Một giá trị mã được lấy từ người dùng. Nếu giá trị đầu vào không trống, giá trị đó sẽ được kiểm tra bằng hai giá trị mã bằng cách sử dụng hàm OR. Nếu giá trị khớp với bất kỳ mã nào, thông báo tương ứng sẽ được in. Nếu không tìm thấy mã phù hợp, thông báo mặc định sẽ được in.

#!/bin/bash

#Lấy mã khóa học từ người dùng

đọc -P 'Nhập mã khóa học:' mã số

#Kiểm tra xem biến có trống hay không

nếu như [ ! -Với mã $ ]

sau đó

#Kiểm tra giá trị đầu vào bằng câu lệnh 'if-elif-else'

nếu như [ [ mã $ == 'CSE-106' || mã $ == 'CSE-108' ] ]

sau đó

tiếng vọng 'Khóa học CSE.'

Elif [ [ mã $ == 'BBA-203' || mã $ == 'BBA-202' ] ]

sau đó

tiếng vọng 'Khóa học BBA.'

khác

tiếng vọng 'Mã khóa học không hợp lệ.'



khác

tiếng vọng 'Không có mã khóa học nào được đưa ra.'

đầu ra :

Đầu ra sau xuất hiện sau khi thực thi tập lệnh với giá trị đầu vào là “CSE-108”:

  p5-1

Đầu ra sau xuất hiện sau khi thực thi tập lệnh với giá trị đầu vào là “BBA-56”:

  p5-2

Lên đầu trang

Sử dụng câu lệnh “If” lồng nhau

Khi một điều kiện “if” được sử dụng bên trong một điều kiện “if” khác, nó được gọi là câu lệnh “if” lồng nhau. Phương pháp sử dụng “if” lồng nhau được hiển thị trong tập lệnh sau. Hai giá trị nhãn hiệu được lấy từ người dùng. Nếu các giá trị đầu vào không trống, điều kiện “if” đầu tiên sẽ kiểm tra xem giá trị của “$theory” có lớn hơn hoặc bằng 60 hay không. Nếu điều kiện “if” đầu tiên trả về “true”, thì điều kiện “if” thứ hai sẽ kiểm tra xem giá trị của “$lab” có lớn hơn hoặc bằng 50 hay không. Nếu điều kiện “if” thứ hai cũng trả về “true”, thông báo thành công sẽ được in. Nếu không, thông báo lỗi sẽ được in.

#!/bin/bash

#Đi điểm lý thuyết

đọc -P 'Nhập điểm lý thuyết:' lý thuyết

#Lấy điểm thí nghiệm

đọc -P 'Nhập dấu thí nghiệm:' phòng thí nghiệm

#Kiểm tra xem các biến có trống hay không

nếu như [ [ ! -Với lý thuyết $ && ! -Với phòng thí nghiệm $ ] ]

sau đó

#Kiểm tra các giá trị đầu vào bằng câu lệnh 'if' lồng nhau

nếu như [ lý thuyết $ -ge 60 ]

sau đó

nếu như [ phòng thí nghiệm $ -ge năm mươi ]

sau đó

tiếng vọng 'Bạn đã qua.'

khác

tiếng vọng 'Bạn đã bị trượt.'



khác

tiếng vọng 'Bạn đã bị trượt.'



khác

tiếng vọng 'Lý thuyết hoặc điểm thí nghiệm trống.'

đầu ra :

Đầu ra sau xuất hiện nếu cả hai hoặc một trong các giá trị đầu vào trống:

  p6-1

Kết quả sau đây xuất hiện nếu 78 được lấy làm điểm lý thuyết và 45 được lấy làm điểm phòng thí nghiệm. Ở đây, điều kiện “if” thứ hai trả về “false”:

  p6-2

Kết quả sau đây xuất hiện nếu 67 được lấy làm điểm lý thuyết và 56 được lấy làm điểm phòng thí nghiệm. Ở đây, cả hai điều kiện “if” đều trả về “true”:

  p6-3

Kết quả sau đây xuất hiện nếu 50 được lấy làm điểm lý thuyết và 80 được lấy làm điểm phòng thí nghiệm. Ở đây, điều kiện “if” đầu tiên trả về “false”:

  p6-4

Lên đầu trang

Sử dụng câu lệnh “If” để kiểm tra sự tồn tại của tệp

Sự tồn tại của tệp có thể được kiểm tra bằng tập lệnh bash theo hai cách. Một là sử dụng toán tử “-f” với dấu ngoặc “[]”. Một cách khác là sử dụng lệnh “test” và toán tử “-f”. Tên tệp được lấy và kiểm tra sự tồn tại của tệp bằng cách sử dụng điều kiện “if” với toán tử “-f”. Sau đó, một tên tệp khác được lấy và kiểm tra sự tồn tại của tệp bằng cách sử dụng câu lệnh “if” với lệnh “test” và toán tử “-f”.

#!/bin/bash

#Lấy tên tệp

đọc -P 'Nhập tên tệp:' fn1

#Kiểm tra xem file có tồn tại hay không mà không sử dụng `test`

nếu như [ -f $fn1 ]

sau đó

tiếng vọng ' $fn1 File tồn tại.'

khác

tiếng vọng ' $fn1 tập tin không tồn tại.'



#Thêm dòng mới

tiếng vọng

#Lấy tên tệp khác

đọc -P 'Nhập tên tệp khác:' fn2

#Kiểm tra xem tệp có tồn tại hay không bằng cách sử dụng `test`

nếu như Bài kiểm tra -f $fn2 ; sau đó

tiếng vọng ' $fn2 File tồn tại.'

#Kiểm tra xem tệp có trống hay không bằng cách sử dụng `test`

nếu như Bài kiểm tra -Với $fn2 ; sau đó

tiếng vọng ' $fn2 tập tin trống.'

khác

tiếng vọng ' $fn2 tập tin không trống.'



khác

tiếng vọng ' $fn2 tập tin không tồn tại.'

đầu ra :

Đầu ra sau xuất hiện sau khi thực thi tập lệnh bằng cách lấy “test.txt” và “testing.txt” làm tên tệp. Theo kết quả đầu ra, cả hai tệp đều tồn tại ở vị trí hiện tại và tệp “testing.txt” trống:

  p7-1

Đầu ra sau xuất hiện sau khi thực thi tập lệnh bằng cách lấy “f1.txt” và “test.txt” làm tên tệp. Theo kết quả đầu ra, tệp “f1.txt” không tồn tại ở vị trí hiện tại và tệp “test.txt” không trống:

  p7-2

Lên đầu trang

Sử dụng câu lệnh “If” để kiểm tra sự tồn tại của thư mục

Sự tồn tại của thư mục có thể được kiểm tra bằng tập lệnh Bash theo hai cách giống như tệp. Một là sử dụng toán tử “-d” với dấu ngoặc “[]”. Một cách khác là sử dụng lệnh “test” và toán tử “-d”. Tên thư mục được lấy và kiểm tra sự tồn tại của thư mục bằng cách sử dụng điều kiện “if” với toán tử “-d”. Sau đó, một tên thư mục khác sẽ được lấy và kiểm tra sự tồn tại của tệp bằng cách sử dụng câu lệnh “if” với lệnh “test” và toán tử “-d”.

#!/bin/bash

#Lấy tên thư mục

đọc -P 'Nhập tên thư mục:' bạn1

#Kiểm tra xem thư mục có tồn tại hay không mà không cần sử dụng `test`

nếu như [ -d $dir1 ]

sau đó

tiếng vọng ' $dir1 thư mục tồn tại.'

khác

tiếng vọng ' $dir1 thư mục không tồn tại.'



#Thêm dòng mới

tiếng vọng

#Lấy tên thư mục khác

đọc -P 'Nhập tên thư mục khác:' dir2

#Kiểm tra xem tệp có tồn tại hay không bằng cách sử dụng `test`

nếu như Bài kiểm tra -d $dir2

sau đó

tiếng vọng ' $dir2 thư mục tồn tại.'

khác

tiếng vọng ' $dir2 thư mục không tồn tại.'

đầu ra :

Đầu ra sau xuất hiện sau khi thực thi tập lệnh với tên thư mục “temp” và “files”. Theo đầu ra, cả hai thư mục đều tồn tại ở vị trí hiện tại. Sau đó, lệnh “ls” được thực thi để kiểm tra nội dung của các thư mục:

  p8-1

Đầu ra sau xuất hiện sau khi thực thi tập lệnh với tên thư mục “thử nghiệm” và “mới”. Theo kết quả đầu ra, cả hai thư mục đều không tồn tại ở vị trí hiện tại. Sau đó, đầu ra của lệnh “ls” cho thấy cả hai thư mục đều không tồn tại:

  p8-2

Lên đầu trang

Sử dụng câu lệnh “If” với Regex

Tập lệnh sau đây hiển thị phương pháp xác thực dữ liệu đầu vào bằng cách sử dụng câu lệnh “if” với biểu thức chính quy. Ở đây, hai giá trị đầu vào được lấy từ người dùng và được lưu trữ trong các biến “$bookname” và “$bookprice”. Điều kiện “if” được sử dụng trong tập lệnh để kiểm tra xem biến “$bookname” có chứa tất cả các ký tự chữ cái hay không và biến “$bookprice” có chứa một số hay không.

#!/bin/bash

#Lấy tên sách và giá từ người dùng

tiếng vọng -N 'Nhập tên sách:'

đọc Tên sách

tiếng vọng -N 'Nhập giá sách:'

đọc giá sách

#Kiểm tra tên sách chỉ chứa bảng chữ cái

nếu như ! [ [ ' tên sách $ ' =~ [ A-Za-z ] ] ] ; sau đó

tiếng vọng 'Tên sách không hợp lệ.'

khác

tiếng vọng 'Tên sách là hợp lệ.'



#Kiểm tra giá sách chỉ chứa chữ số

nếu như ! [ [ ' giá sách $ ' =~ [ 0 - 9 ] ] ] ; sau đó

tiếng vọng 'Giá sách chỉ có thể chứa chữ số.'

khác

tiếng vọng 'Giá sách là hợp lệ.'

đầu ra :

Đầu ra sau xuất hiện sau khi thực thi tập lệnh với các giá trị đầu vào là “Lập trình Bash” làm tên sách và 78 làm giá sách:

  p9-1

Đầu ra sau xuất hiện sau khi thực thi tập lệnh với giá trị đầu vào là 90 làm tên sách và “Bash” làm giá sách:

  p9-2

Lên đầu trang

Sử dụng Tuyên bố “Trường hợp”

Câu lệnh “case” là sự thay thế của câu lệnh “if-elif-else” nhưng tất cả các tác vụ của câu lệnh “if-elif-else” không thể được thực hiện bằng cách sử dụng câu lệnh “case”. Việc sử dụng đơn giản câu lệnh “case” được hiển thị trong đoạn script sau. Một giá trị số được lấy từ người dùng làm giá trị tháng hiện tại. Sau đó, tháng tương ứng sẽ được in nếu tìm thấy bất kỳ giá trị trùng khớp nào trong câu lệnh “case”. Nếu không, thông báo mặc định sẽ được in.

#!/bin/bash

#Lấy giá trị tháng hiện tại bằng số

đọc -P 'Nhập tháng của ngày hôm nay bằng số:' b_tháng

#In văn bản trước khi in tên tháng

tiếng vọng -N 'Tên tháng hiện tại là'

#Tìm hiểu và in tên tháng phù hợp dựa trên dữ liệu đầu vào

trường hợp $b_tháng TRONG

1 | 01 ) tiếng vọng 'Tháng Giêng.' ;;

2 | 02 ) tiếng vọng 'Tháng 2.' ;;

3 | 03 ) tiếng vọng 'Bước đều.' ;;

4 | 04 ) tiếng vọng 'Tháng tư.' ;;

5 | 05 ) tiếng vọng 'Có thể.' ;;

6 | 06 ) tiếng vọng 'Tháng sáu.' ;;

7 | 07 ) tiếng vọng 'Tháng bảy.' ;;

số 8 | 08 ) tiếng vọng 'Tháng tám.' ;;

9 | 09 ) tiếng vọng 'Tháng 9.' ;;

10 ) tiếng vọng 'Tháng Mười.' ;;

mười một ) tiếng vọng 'Tháng mười một.' ;;

12 ) tiếng vọng 'Tháng 12.' ;;

* ) tiếng vọng 'không tìm thấy.' ;;

esac

đầu ra :

Đầu ra sau xuất hiện sau khi thực thi tập lệnh có giá trị 6:

  p10-1

Đầu ra sau xuất hiện sau khi thực thi tập lệnh có giá trị 09:


  p10-2

Đầu ra sau xuất hiện sau khi thực thi tập lệnh có giá trị 14:

  p10-3

Lên đầu trang

Phần kết luận

Các cách sử dụng khác nhau của logic điều kiện bằng cách sử dụng câu lệnh “if” và “case” được trình bày trong 10 ví dụ của hướng dẫn này. Khái niệm sử dụng logic có điều kiện trong Bash sẽ được hiểu rõ hơn đối với người dùng Bash mới sau khi đọc hướng dẫn này.