Đánh giá lập trình shell trên linux năm 2024

Các câu lệnh được sử dụng cho việc rẽ nhánh, điều kiện như if-then, test, hoặc cặp dấu [ expr ]. Phần này sẽ tìm hiểu cách shell làm việc với những thứ như vậy.

1.If-then

Câu lệnh if-then đc sử dụng để tạo nên việc đánh giá điều điện nào đó. Cú pháp:

if condition then commands … fi

Ý nghĩa: với if-then trên, trước tiên sẽ đánh giá condition, nếu condition thực thi thành công(exit status code=0) thì sẽ thực hiện các commands sau then.

Ví dụ: Ta có đoạn script:

Đánh giá lập trình shell trên linux năm 2024

Thực thi:

Đánh giá lập trình shell trên linux năm 2024

Ở trên, biến testuser đc gán là Cuong.bắt đầu mệnh đề if, câu lệnh grep sẽ tìm xem trong file /etc/passwd có chuỗi nào có tên là Cuong hay ko, nếu trùng tức là câu lệnh đc thực hiện thành công, exit status code là 0. Lúc này, các câu lệnh theo sau then sẽ đc thực thi, liệt kê toàn bộ những file bash của testuser Ngoài ra còn có thể đặt theo kiểu

if command; then commands fi

2.if-then-else

Với mệnh đề if-then ở trên, ta chỉ có 1 lựa chọn cho việc đánh giá. Mệnh đề if-then-else cung cấp một cách so sánh khác. Cho phép ta có nhiều lựa chọn hơn cho việc so sánh.

Cú pháp:

if command then commands else commands fi

Nếu command trong câu lệnh if đầu tiên, trả về một exit status code là 0(zero), thì những commands ngay sau then sẽ đc thực thi tương tự như if-then. Nhưng nếu command trên if ko trả về 0, thì các commands phía sau else sẽ đc thực thi.

Đánh giá lập trình shell trên linux năm 2024

Thực thi:

Đánh giá lập trình shell trên linux năm 2024

3.Câu lệnh test hoặc cặp dấu [ expr ]

Cả 2 Câu lệnh thường đc sử dụng để kiểm tra định dạng file hoặc so sánh các giá trị. Thường thì đc sử dụng cho việc:

  1. -So sánh các thuộc tính của file
  2. -Thực hiện việc so sánh các chuỗi
  3. -So sánh toán học

Cú pháp:

test condition

condition là một loạt các tham số và giá trị đc test thực hiện. Nếu sử dụng với if-then thì sẽ tương tự như vầy:

if test condition then commands fi

hoặc

if [ condition ] then commands fi

***Lưu ý khoảng trắng của condition

So sánh số:

Đánh giá lập trình shell trên linux năm 2024

So sánh string:

Đánh giá lập trình shell trên linux năm 2024

So sánh thuộc tính của file:

Đánh giá lập trình shell trên linux năm 2024

Một số phép so sánh trong shell:

-eq ngang bằng -ne không ngang bằng -lt nhỏ hơn -le nhỏ hơn hoặc bằng -gt lớn hơn -ge lớn hơn hoặc bằng

Một số phép xử lý thuộc tính file:

-s file tồn tại và khác rỗng(NULL) -f file tồn tại và ko phải là thư mục -d thư mục tồn tại -x file có thể thực thi -w file có thể ghi -r file có thể đọc

Làm việc với string:

Operator Meaning string1 = string2 string1 ngang bằng string2 string1 != string2 string1 khác string2 string1 string1 ko rỗng hoặc ko đc định nghĩa -n string1 string1 tồn tại và không rỗng -z string1 string1 tồn tại nhưng rỗng

Phép toán logic:

Operator Meaning ! expression phép NOT expression1 -a expression2 phép AND expression1 -o expression2 phép OR

[Shell script] Biểu thức toán học- Math

Trong shell, có 3 cách để thực thi các biểu thức toán học:

1.Sử dụng câu lệnh expr

Câu lệnh expr cho phép tính toán từ command line. Ví dụ:

$ expr 1 + 3 4

Lưu ý, phải có khoảng trắng giữa toán tử và toán hạng. Nếu ở trên đổi thành 1+3 hoặc 1+ 3 hoặc 1 +3, thì đều cho kết quả hoặc có thông báo sai.

Đánh giá lập trình shell trên linux năm 2024

Các phép toán như cộng, trừ, nhân, chia có thể đc sử dụng. Nhưng có một điểm cần lưu ý với phép toán nhân(*). Trong linux, ký tự * là một ký tự khá đặc biệt, nó là ký tự đại diện cho toàn bộ một nhóm ký tự, đối tượng nào đó. Nếu sử dụng phép toán a * b trong shell, sẽ có thông báo lỗi. Thay vào đó ta phải sử dụng cú pháp: a \* b. Khi đó, phép toán sẽ đc thực hiện.

Đánh giá lập trình shell trên linux năm 2024

Ví dụ về 1 script:

#!/bin/bash # An example of using the expr command var1=10 var2=20 var3=`expr $var2 / $var1` echo The result is $var3

Script trên mô tả về việc lưu một giá trị của một biểu thức vào một biến. Muốn làm được điều này, ta phải sử dụng ký tự gọi là backtick(`).

Đánh giá lập trình shell trên linux năm 2024

2.Sử dụng ký tự bracket(dấu ngoặc vuông)

Shell còn cung cấp cho ta một cách để thực hiện các phép toán. Để gán giá trị cho một biến, có thể sử dụng cú pháp sau:

$[operation]

Ví dụ:

$ var1 = $[1 + 3]

Lúc này, var1 sẽ nhận giá trị là 4. Khi đã sử dụng ký tự bracket, thì phép toán * đã nói ở trên trở thành hợp lệ

$ var2 = $[var1 * 3] $ echo var2 12

Hạn chế của việc sử dụng bracket này đó là nó chỉ hỗ trợ phép tính số nguyên-integer

#!/bin/bash var1=100 var2=45 var3=$[$var1 / $var2] echo The final result is $var3

Đánh giá lập trình shell trên linux năm 2024

khi chạy script trên, nó sẽ in ra kết quả là 2. Đây là hạn chế chính của việc sử dụng bracket trong tính toán

3. Sử dụng bc-bash calculator Đây là một ngôn ngữ cho phép ta nhập các số float vào trong bash shell. bc có thể nhận dạng và xử lý:

-các số (cả integer và float) -biến -comment dùng để diễn giải đoạn code( /* */) -Expression-các biểu thức -Các statement (ví dụ if -then) -Các hàm

Đánh giá lập trình shell trên linux năm 2024

3.1.Đưa bc vào trong script

Ta có thể đưa bc vào trong srcipt để tính toán. Cú pháp:

variable=`echo “options; expression” | bc`

variable: tên biến options: các tùy chọn expression:biểu thức

Với cú pháp trên, ta đã đưa kết quả của expression vào biến variable.

Đánh giá lập trình shell trên linux năm 2024

Ở trong script trên, scale cho biết số lượng số sau dấu chấm.

[Shell script] Vòng lặp

TRong bash shell cũng cung cấp cho ta 3 kiểu loop: -for -while -until Phần 1 sẽ nói về vòng lặp for

TRong mỗi kiểu loop đều thực thi theo trình tự:

  1. 1. Trước tiên, biến đc sử dụng trong điều kiện lặp phải được gán, sau đó vòng lặp bắt đầu
  2. 2. Một điều kiện đc sinh ra trong mỗi lần bắt đầu lặp
  3. 3. Thân vòng lặp sẽ kết thúc với 1 statement chỉnh sửa giá trị của biến kiểm tra

Vòng lặp for có thể sử dụng dưới 2 dạng: -Dạng thứ nhất:

for { variable name } in { list } do execute one for each item in the list until the list is not finished (And repeat all statement between do and done) done

variable name: tên biến đc sử dụng list: các giá trị mà biến sẽ nhận trong “do … done” sẽ là những câu lệnh bash đc thực thi.

Các ví dụ: -Đọc giá trị từ 1 list

Đánh giá lập trình shell trên linux năm 2024

Đánh giá lập trình shell trên linux năm 2024

***Lưu ý khi sử dụng các dấu quote trong khi đọc các giá trị. Nên đặt vào trong cặp dấu “”

-Đọc list từ biến

Đánh giá lập trình shell trên linux năm 2024

-Đọc giá trị từ 1 câu lệnh

Đánh giá lập trình shell trên linux năm 2024

**Lưu ý, mỗi biến phải đc đặt ở một dòng riêng, ko phải phân biệt qua khoảng cách

-Đọc tất cả các files trong một thư mục

Đánh giá lập trình shell trên linux năm 2024

-Dạng thứ 2 của vòng lặp for

for (( variable assignment ; condition ; iteration process )) do ….. … repeat all statements between do and done until condition is TRUE done

Ví du:

Đánh giá lập trình shell trên linux năm 2024

-Sử dụng nhiều biến cùng lúc

Đánh giá lập trình shell trên linux năm 2024

[Shell script] Vòng lặp

Ở phần trước đã nói về vòng lặp với for, ở phần này sẽ tìm hiểu vòng lặp với while và until

—-While command—–

Câu lệnh while cũng đc sử dụng để tạo nên một vòng lặp.

Cú pháp:

while [ condition ] do command1 command2 command3 .. …. done
Vòng lặp sẽ đc thực thi khi giá trị của condition là true. Cần phải lưu ý về điều kiện dừng của vòng lặp

vd: ĐOạn script sau sẽ yêu cầu ta nhập vào một số, nếu đúng với biến đã định trước thì sẽ thông báo đoán đúng, nếu sai yêu cầu nhập tiếp:

Đánh giá lập trình shell trên linux năm 2024

Đánh giá lập trình shell trên linux năm 2024

—–Until command——

Cú pháp lệnh:

until [ condition ] do command1 command2 … …. commandN done

Until làm việc trái ngược hẳn so với while. Các biểu thức xác định độ dừng(condition) phải trả về một exit status khác 0. Có nghĩa là, khi điều kiện dừng trả về exit status code khác 0, vòng lặp tiếp tục được thực hiện. Khi status code bằng 0, lúc đó vòng lặp sẽ dừng.