Tìm hiểu Lập trình Shell linux (P1)

746

I. Shell script là gì

Shell là chương trình giao tiếp với người dùng. Có nghĩa là shell chấp nhận các lệnh từ bạn (keyboard) và thực thi nó. Nhưng nếu bạn muốn sử dụng nhiều lệnh chỉ bằng một lệnh, thì bạn có thể lưu chuỗi lệnh vào text file và bảo shell thực thi text file này thay vì nhập vào các lệnh. Điều này gọi là shell script.

Định nghĩa: Shell script là một chuỗi các lệnh được viết trong plain text file. Shell script thì giống như batch file trong MS-DOS nhưng mạnh hơn.

Tại sao phải viết shell script:

• Shell script có thể nhận input từ user, file hoặc output từ màn hình.

• Tiện lợi để tạo nhóm lệnh riêng.

• Tiết kiệm thời gian.

• Tự động làm một vài công việc thường xuyên.

II. Hướng dẫn tạo và thực thi chương trình shell

step1: Tạo file hello.sh (trong thư mục cd /home/tuanvh/) nội dung như sau:

sử dụng vi, emacs, gedit… để soạn thảo nội dung

 

Dòng đầu tiên chúng ta luôn đặt #!/bin/bash, đây là cú pháp bắt buộc. Sau # được hiểu là comment, chú thích của các đoạn mã.

step2: Sau đó, để script có thể thực thi ta phải cấp quyền cho nó

 

step3: Thực thi file shell.

 

III. Biến trong shell

Trong Linux shell có 2 loại biến:

Biến hệ thống :

  • Tạo ra và quản lý bởi Linux.
  • Tên biến là CHỮ HOA

Biến do người dùng định nghĩa

-Tạo ra và quản lý bởi người dùng -Tên biến là chữ thường

1. Một số biến hệ thống

VD: file hello.sh

 

Kết quả: run ./hello.sh

 

2. Biến người dùng, cú pháp, quy tắc đặt tên

cú pháp:

 

  • tên_biến phải bắt đầu bằng ký tự
  • Không có dấu cách 2 bên toán tử = khi gán giá trị cho biến

 

  • Tên biến có phân biệt chữ hoa, thường

 

  • Một biến không có giá trị khởi tạo thì bằng NULL
  • Không được dùng dấu ?, * để đặt tên các biến

ECHO Để in giá trị của biến

Cú pháp:

 

  • In một số ký tự đặc biệt trong tham số với tùy chọn -e:

 

IV: Các phép toán số học

Shell cung cấp cho ta một số biểu thức toán học.

Cú pháp:

 

example:

 

Chú ý: Phải có dấu cách trước và sau toán tử.

 

Các dấu ngoặc

  • Tất cả các ký tự trong dấu ngoặc kép đều không có ý nghĩa ñnh toán, trừ những ký tự sau \ hoặc $
  • Dấu nháy ngược (`): nghĩa là yêu cầu thực thi lệnh

 

**Kiểm tra trạng thái trả về của 1 câu lệnh cú pháp

 

– Trạng thái 0 nếu câu lệnh kết thúc thành công. – Khác 0 nếu kết thúc có lỗi

 

V: Cấu trúc điều khiển trong shell script

Cũng giống như các ngôn ngữ lập trình khác, Shell Scripts cũng cung cấp các vòng lặp: “for”, “while”; và lệnh rẽ nhánh “if”, “case”.

1. Cú pháp rẽ nhánh If Cú pháp:

 

if…else…fi

Cú pháp:

 

Vòng lặp For

Cú pháp:

 

example

 

3. Vòng lặp While

 

example demo1.sh

 

Kết quả sau khi chạy ./demo1.sh

 

VI: Lệnh test

Lệnh test được dùng để kiểm tra một biểu thức là đúng hay không và trả lại

–  0 nếu biểu thức đúng

–  khác 0 sai

Cú pháp:

 

Các phép toán kiểm tra

Mathematical Operator in,Shell Scrip Meaning Normal Arithmetical/ Mathematical Statements
For test statement with if command For [ expr ] statement with if command
-eq is equal to 5 == 6 if test 5 -eq 6 if [ 5 -eq 6 ]
-ne is not equal to 5 != 6 if test 5 -ne 6 if [ 5 -ne 6 ]
-lt is less than 5 < 6 if test 5 -lt 6 if [ 5 -lt 6 ]
-le is less than or equal to 5 <= 6 if test 5 -le 6 if [ 5 -le 6 ]
-gt is greater than 5 > 6 if test 5 -gt 6 if [ 5 -gt 6 ]
-ge is greater than or equal to 5 >= 6 if test 5 -ge 6 if [ 5 -ge 6 ]

NOTE: == is equal, != is not equal.

For string Comparisons use

Operator Meaning
string1 = string2 string1 is equal to string2
string1 != string2 string1 is NOT equal to string2
string1 string1 is NOT NULL or not defined
-n string1 string1 is NOT NULL and does exist
-z string1 string1 is NULL and does exist

Toán tử logic

Operator Meaning
! expression Logical NOT
expression1,-a,expression2 Logical AND
expression1,-o,expression2 Logical OR

kiểm tra file, thư mục

Test Meaning
-s file Non empty file
-f file Is File exist or normal file and not a directory
-d dir Is Directory exist and not a file
-w file Is writeable file
-r file Is read-only file
-x file Is file is executable

 

TopDev via Viblo