ShellScript – Tiếp Diễn (P4)

Tram Ho

Chúng ta tiếp tục cùng tìm hiểu những phần tiếp theo của shell script nhé !
🔻 Số học (Arithmetic) (tiếp)

▪️ Sử dụng 2 lần dấu ngoặc đơn (( )), cú pháp:

Ví dụ:

  • Dòng 3 – Đây là định dạng cơ bản, ta có thể sắp xếp nó một cách dễ dàng mà không cần trích dẫn.
  • Dòng 6 – Nó hoạt động tương tự nếu ta viết không có khoảng trắng.
  • Dòng 9 – Ta có thể viết bao gồm các biến mà không có dấu $ đằng trước.
  • Dòng 12 – Các biến có thể được bao gồm với dấu $ nếu ta muốn.
  • Dòng 15 – Ở đây giá trị của biến b được tăng thêm 1. Khi ta làm điều này, ta không cần dấu $ trước dấu ngoặc.
  • Dòng 18 – Ở đây giá trị của biến b được tăng thêm 3. Nó là cách viết ngắn hơn của b = b + 3.

▪️ Độ dài của một biến, cú pháp:

Ví dụ:


🔻 Câu lệnh IF

▪️ Chúng ta sẽ tìm hiểu sâu hơn về câu lệnh if nhé

  • Các câu lệnh if cho phép chúng ta đưa ra quyết định trong các tập lệnh Bash của chúng ta. Nó cho phép ta quyết định có chạy mã hay không dựa trên các điều kiện mà ta có thể đặt.

▪️ Câu lệnh IF cơ bản

  • Một câu lệnh if cơ bản sẽ check: nếu một điều kiện cụ thế trả về true thì nó sẽ thực hiện một tập hợp các hành động nhất định.Nếu không nó sẽ không thực hiện các hành động đó, cú pháp như sau:

  • Bất cứ câu lệnh nào đặt giữa thenfi sẽ được thực hiện nếu điều kiện trả về true.
  • Ví dụ:

  • Dòng 3 – ở đây, sẽ check xem biến truyền vào đầu tiên có lớn hơn 50 hay không
  • Dòng 5 – Nếu biến truyền vào lớn hơn 50, sẽ cho echo ra màn hình text “Amazingggg.”


▪️ Toán tử (Operator)

Toán tửMô tả
!conditionnếu condition là true thì sẽ trả về false và ngược lại
-n stringđộ dài của string lớn hơn 0
-z stringđộ dài của string bằng 0 (tức là rỗng)
string1 = string2string1 bằng string2
string1 != string2hai string không giống nhau
integer1 -eq integer2integer1 bằng integer2
integer1 -gt integer2integer1 lớn hơn integer2
integer1 -lt integer2integer1 nhỏ hơn integer2
-d filefile tồn tại và là một thư mục
-e filefile tồn tại
-r filefile tồn tại và được quyền đọc
-s filefile tồn tại và kích thước của nó lớn hơn 0
-w filefile tồn tại và được quyền viết
  • Lưu ý:
  • = hơi khác so với -eq, ví dụ [005 = 5] sẽ trả về false, còn [005 -eq 5] sẽ trả về true.
  • Khi ta đề cập đến file bên trên sẽ được hiểu là một path. Một path – đường dẫn có thể là tuyệt đối hoặc tương đối và có thể tham chiếu đến một tệp hoặc một thư mục.
  • ta có thể dùng command test để test thử các trường hợp ta đề cập đến, ví dụ:


▪️ Câu lệnh if lồng nhau

  • Ta có thể có nhiều câu lệnh if trong tập lệnh của mình. Ví dụ:

  • Dòng 3 – Thực hiện khi tham số đầu tiên truyền vào lớn hơn 50
  • Dòng 6 – Nếu ta muốn kiểm tra một biểu thức ta có thể sử dụng 2 lần mở đóng ngoặc như trên
  • Dòng 8 – Sẽ chạy nếu biểu thức dòng 6 trả về true

▪️ Câu lệnh if else

  • Trong những trường hợp ta muốn thực hiện một số hành động nhất định nếu điều kiện trong [] trả về true và những hành động khác nếu trả về false, ta có thể viết theo dạng:

  • Ví dụ:

▪️ Câu lệnh if elif else

  • Ta có thể thêm được nhiều điều kiện để có thể dẫn đến các kết quả khác nhau , bằng cách sử dụng if elif else. Cú pháp:

  • Ví dụ:

  • Ta có thể có nhiều nhánh elif nếu muốn. Và kết thúc sẽ sử dụng tùy chọn else.

▪️ Toán tử Boolean

  • Toán tử này bao gồm: and - &&or- ||
  • Ví dụ:


▪️ Nhắc lại câu lệnh Case

  • Về cơ bản, ifcase khá giống nhau. Tuy nhiên, ta thường sử dụng case trong bài toán dạng mul-ti choice + biểu thức đơn giản, còn if sẽ dùng cho các bài toán ít trường hợp và sử dụng biểu thức phức tạp
  • Cú pháp sử dụng case:

  • Ví dụ:

  • Dòng 3: Dòng này bắt đầu thực thi lênh case
  • Dòng 4: Nếu biến truyền vào đầu tiên $1yellow sẽ thực thi lệnh bên trong nó. Dấu ) thể hiện việc kết thúc các trường hợp.
  • Dòng 6: Ta xác định kết thúc của tập hợp câu lệnh này bằng dấu ;;
  • Dòng 13: Dấu * đại diện cho bất kỳ ký tự nào, ta có thể coi đây là default nếu biến truyền vào không rơi vào bất cứ trường hợp nào
  • Dòng 16: esaccho biết ta đang ở cuối câu lệnh case. Bất kỳ câu lệnh khác nào sau nó sẽ được thực hiện bình thường.

Trên đây mình đã tìm hiểu thêm về ArithmeticIf Else. Mình xin kết thúc phần 4 tại đây.
Cảm ơn các bạn đã đọc bài viết!
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo