Tạo scrip trong linux 6.5

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:


Thực thi:




Ở 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.


Thực thi:



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ố:




















So sánh string:



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




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


-eq  ngang bằng-ne không ngang bằng-lt nhỏ hơn-lenhỏ 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:

OperatorMeaningstring1 = string2 string1 ngang bằng string2string1 != string2string1 khác  string2string1string1 ko rỗng hoặc ko đc định nghĩa-n string1string1 tồn tại và không rỗng-z string1string1 tồn tại nhưng rỗng
Phép toán logic:



Operator           Meaning! expressionphép NOTexpression1  -a  expression2phép  ANDexpression1  -o  expression2phép  OR

Chương trình Linux bc có thể được sử dụng như một máy tính để bàn thuận tiện hoặc như một ngôn ngữ kịch bản toán học. Nó dễ dàng như gọi lệnh bc thông qua một thiết bị đầu cuối.

Bên cạnh tiện ích bc, trình bao Bash cung cấp một vài phương thức khác để thực hiện các phép toán số học .

Lưu ý: Chương trình bc còn được gọi là máy tính cơ bản hoặc máy tính để bàn.

Cú pháp lệnh bc

Cú pháp cho lệnh bc tương tự như ngôn ngữ lập trình C, và một loạt các toán tử được hỗ trợ, như cộng, trừ, cộng hoặc trừ, và nhiều hơn nữa.

Đây là các công tắc khác nhau có sẵn với lệnh bc:

  • -h, --help: In việc sử dụng và thoát này.
  • -i, --interactive: Buộc chế độ tương tác.
  • -l, --mathlib: Sử dụng các quy trình toán học được xác định trước.
  • -q, --quiet: Không in biểu ngữ ban đầu.
  • -s, - tiêu chuẩn: Cấu trúc bc không chuẩn là lỗi.
  • -w, --warn: Cảnh báo về các cấu trúc bc không chuẩn.
  • -v, --version: In thông tin phiên bản và thoát.

Xem Hướng dẫn sử dụng bc này để biết thêm chi tiết về cách bạn có thể sử dụng máy tính cơ bản.

Ví dụ về lệnh bc

Các máy tính cơ bản có thể được sử dụng trong một thiết bị đầu cuối bằng cách chỉ cần nhập bc , sau đó bạn có thể gõ các biểu thức toán học thông thường như thế này:

4 + 3

... để có được kết quả như thế này:

7

Khi thực hiện một loạt các phép tính liên tục, nó có ý nghĩa để sử dụng máy tính bc như là một phần của một tập lệnh. Hình thức đơn giản nhất của tập lệnh như vậy sẽ trông giống như sau:

#! / bin / bash echo '6.5 / 2.7' | bc

Dòng đầu tiên chỉ là đường dẫn tệp thực thi chạy tập lệnh này.

Dòng thứ hai chứa hai lệnh. Lệnh echo tạo ra một chuỗi chứa biểu thức toán học chứa trong các dấu nháy đơn [6.5 chia cho 2.7, trong ví dụ này]. Toán tử đường ống [|] chuyển chuỗi này làm đối số cho chương trình bc. Đầu ra của chương trình bc sau đó được hiển thị trên dòng lệnh.

Để thực thi kịch bản này, hãy mở một cửa sổ dòng lệnh và điều hướng đến thư mục có tập lệnh. Chúng tôi sẽ giả sử tập lệnh được gọi là bc_script.sh . Đảm bảo tệp có thể thực thi bằng lệnh chmod :

chmod 755 bc_script.sh

Sau đó, bạn sẽ nhập:

./bc_script.sh

Kết quả sẽ như sau:

2

Để hiển thị 3 chữ số thập phân vì câu trả lời đúng là 2.407407 ..., sử dụng câu lệnh tỷ lệ bên trong chuỗi được phân cách bằng dấu nháy đơn:

#! / bin / bash echo 'scale = 3; 6,5 / 2,7 '| bc

Để dễ đọc hơn, dòng có tính toán có thể được viết lại trên nhiều dòng. Để ngắt dòng lệnh thành nhiều dòng, bạn có thể đặt dấu gạch chéo ngược ở cuối dòng:

echo 'scale = 3; var1 = 6,5 / 2,7; var1 '\ | bc

Để bao gồm các đối số dòng lệnh trong các phép tính bc của bạn, bạn phải thay đổi các dấu nháy đơn thành các dấu ngoặc kép để các ký hiệu tham số dòng lệnh được diễn giải bởi vỏ Bash:

echo "scale = 3; var1 = 6.5 / 2.7; var2 = 14 * var1; var2 * = $ 1; var2" \ | bc

Đối số dòng lệnh đầu tiên được truy cập bằng biến "$ 1", đối số thứ hai sử dụng "$ 2", v.v.

Bây giờ bạn có thể viết các hàm số học tùy chỉnh của riêng bạn trong các tập lệnh Bash riêng biệt và gọi chúng từ các tập lệnh khác.

Ví dụ: nếu tập lệnh 1 chứa:

#! / bin / bash echo "scale = 3; var1 = 6,5 / 2,7; var2 = 14 * var1; var2 * = $ 1; var2" \ | bc

... và tập lệnh 2 chứa

#! / bin / bash var0 = "100" echo "var0: $ var0" function fun1 {echo "scale = 3; var1 = 10; var2 = var1 * $ var0; var2" \ | bc} fres = $ [fun1] echo "fres:" $ fres var10 = $ [./ script1 $ fres]; echo "var10:" $ var10;

... sau đó thực thi script2 sẽ gọi script1 bằng cách sử dụng biến $ fres được tính toán trong script2 làm tham số.

Chủ Đề