Tìm hiểu lập trình shell trong linux – Bạn đã biết?
Thịnh Văn Hạnh 26/12/2019 1668 Lượt xem Chia sẻ bài viết
Bài viết sau đây, BKNS sẽ đưa cho bạn những thông tin tìm hiểu lập trình shell (bash script) trong linux. Hãy cùng theo dõi nhé.
Tóm Tắt Bài Viết
1. Shell script là gì?
Shell là 1 chương trình giao tiếp với người sử dụng. Điều này được hiểu là shell sẽ chấp nhận những lệnh từ người dùng sau đó hoạt động nó. Tuy nhiên, trong trường hợp người dùng muốn dùng nhiều lệnh chỉ bằng 1 lệnh duy nhất thì người dùng có khả năng ghi nhớ lại chuỗi lệnh vào text file sau đó thông bảo đến shell bắt đầu thực thi text file thay vì gõ vào các lệnh. Đây được gọi là shell script.
Nói tóm lại, shell script là 1 chuỗi nhiều lệnh được viết ở trong plain text file. lập trình shell như batch file trong MS-DOS nhưng mạnh hơn.
Những lý do phải viết shell script:
- Tự động thực hiện công việc thường xuyên
- Tối ưu hoá thời gian
- Thuận lợi để tạo nhóm lệnh riêng
- Shell script có khả năng nhận input từ user, file hay output từ màn hình máy tính
2. Cấu trúc điều khiển trong lập trình shell script
Vòng lặp While có cú pháp:
while [Điều kiện] do command1 command2 command3 .. .... done
Ví dụ: demo1.sh
#!/bin/sh echo "Nhap vao cac so can tinh tong, nhap so am de exit" sum=0 read i while [ $i -ge 0 ] # nếu i >= 0 do sum=`expr $sum + $i` read i # nhận giá trị từ người dùng done echo "Total: $sum."
Kết quả sau khi chạy là:
#output ./demo1.sh Nhap vao cac so can tinh tong, nhap so am de exit 1 5 4 -1 Total= 10.
Vòng lặp for
Cú pháp của vòng lặp For:
for { tên biến } in { danh sách } do # Khối lệnh # Thực hiện từng mục trong danh sách cho đến cho đến hết # (Và lặp lại tất cả các lệnh nằm trong "do" và "done") done #hoặc sử dụng for for (( expr1; expr2; expr3 )) do # Lặp cho đến khi biểu thức expr2 trả về giá trị TRUE done
Ví dụ như:
# for 1 for i in 1 2 3 4 5 do echo $i done #output: 1 2 3 4 5 #for 2 for (( i = 0 ; i <= 5; i++ )) # bao quanh bằng (()) do echo $i done #ouput 1 2 3 4 5
Cú pháp rẽ nhánh If
if điều_kiện then câu lệnh 1 … fi if...else...fi
Cú pháp như sau:
if điều_kiện then câu_lệnh_1 …. else câu_lệnh_2 fi
3. Các phép toán số học trong lập trình shell cơ bản
Như lập trình shell linux, cú pháp của các phép toán số học:
expr toán_hạng_1 toán_tử toán_hạng_2
Ví dụ như:
# phép cộng $expr 1 + 2 # phép trừ $expr 5 - 1 # phép chia $expr 8 / 3 # output =2 phép chia chỉ lấy phần nguyên $expr 8 % 5 # output =3 phép chia lấy phần dư $expr 10 \* 2 # output = 20 phép nhân
Lưu ý: có dấu cách trước và sau toán tử.
# example sai cú pháp
$expr 1+2
$expr 5- 1
Các dấu ngoặc
- Dấu nháy ngược ‘: là yêu cầu thực hành lệnh
- Mọi ký tự trong dấu ngoặc kép đều không có ý nghĩa tính toán, trừ những ký tự sau \ hay $
#example
$ echo “ngay hom nay la: `date`”
#ouput: ngay hom nay la: Wed Apr 27 10:43:59 ICT 2016
$ echo `expr 1 + 2`
#output = 3
$echo “expr 1 + 2”
#ouput: expr 1 + 2
Kiểm tra lệnh trả về của 1 câu lệnh cú pháp
$echo $?
Trạng thái =0 trong trường hợp câu lệnh kết thúc thành công. Ngược lại, câu lệnh kết thúc không thành công thì sẽ kết thúc khác 0.
# xóa file không tồn tại
rm abc.txt #output messenger:( rm: cannot remove `abc.txt’: No such file or directory )
# kiểm tra trạng thái câu lệnh rm abc.txt
$echo $? #output 1 nghĩa là có lỗi
$ echo “ngay hom nay la: `date`”
#output: ngay hom nay la: Wed Apr 27 10:43:59 ICT 2016
$echo $? #output 0, nghĩa là thành công
4. Hướng dẫn tạo vào thực hành chương trình shell
Bước 1: Trên thư mục home/cd xây dựng file hello.sh với nội dung như sau:
Để soạn thảo nội dung sử dụng gedit, emacs, vi,… gõ code như sau:
#!/bin/bash
echo “hello world”
#!/bin/bash là cú pháp bắt buộc cần phải có.
Sau dấu 3 được hiểu là chú thích của những đoạn mã.
Bước 2: Bước này người dùng cần cấp quyền sử dụng cho nó để script.
chmod 0777 hello.sh
Bước 3: Thực hiện file shell
// có thể chạy file bằng 1 số cách sau
– bash hello.sh
– sh hello.sh
– ./hello.sh
5. Biến trong shell
Trong shell có 2 loại biết là biến do người dùng định nghĩa và biến hệ thống.
5.1 Biến do người dùng định nghĩa
Biến do người dùng định nghĩa có cú pháp là: tên_biến=value
Trong đó:
- Tên biến phải bắt đầu bằng ký tự
- Không được phép cho dấu cách ở 2 bên toán tử=khi gán giá trị cho biến
#Đúng
a=1
#sai
a = 1
#sai
a= 1
Tên biến phân biệt cả chữ thường lẫn chữ hoa
#các biến sau đây là khác nhau. Ví dụ:
- a=1
- A=2
Biến nào không có giá trị thì khởi tạo biến ban đầu bằng NULL
Không được sử dụng dấu ?,* để đặt tên biến.
ECHO để in giá trị của biến
Có cú pháp:
echo [option][string,variables…] #example echo $tên_biến
In một số ký tự đặc biệt trong tham số với tuỳ chọn -e:
\a alert (bell)
\b backspace
\c suppress trailing new line
\n new line
\r carriage return
\t horizontal tab
\\ backslash
//example
$ echo -e “Hello\tTu”
#output: Hello Tu
$ echo -e “Hello\nTu”
#output
Hello
BKNS
5.2 Biến hệ thống
Chẳng hạn như file hello.sh có cú pháp như:
#!/bin/bash echo "hello" echo $BASH_VERSION echo $BASH echo $HOME echo $PATH
Đưa ra kết quả: run./hello.sh
hello 4.2.24(1)-release /bin/bash /home/vu.huy.tuan /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Bài viết trên BKNS đã cung cấp thông tin cho bạn về lập trình shell trong linux. Hy vọng, những thông tin mà BKNS cung cấp hữu ích với bạn. Nếu còn bất cứ điều gì thắc mắc, hãy cho BKNS biết thông qua phần bình luận bên dưới hoặc gửi emai cho chúng tôi để được giải đáp nha!. Thường xuyên truy cập website bkns.vn để cập nhật thêm nhiều bài viết hữu ích khác nhé!