Danh mục tài liệu

Bài giảng LINUX và phần mềm nguồn mở - Chương 8: Lập trình Shell

Số trang: 33      Loại file: pdf      Dung lượng: 1.23 MB      Lượt xem: 22      Lượt tải: 0    
Xem trước 4 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng LINUX và phần mềm nguồn mở - Chương 8: Lập trình Shell. Chương này cung cấp cho sinh viên những nội dung gồm: lập trình shell là gì; soạn và thực thi chương trình shell; biến trong shell; một số biến hệ thống; quy tắc đặt tên biến; các phép toán số học;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Nội dung trích xuất từ tài liệu:
Bài giảng LINUX và phần mềm nguồn mở - Chương 8: Lập trình ShellLẬP TRÌNH SHELL TS. TRẦN HẢI ANH Lập trình shell là gì• Shell là trình thông dịch lệnh của Linux – Thường tương tác với người dùng theo từng câu lệnh. – Shell đọc lệnh từ bàn phím hoặc file – Nhờ hạt nhân Linux thực hiện lệnh• Shell script – Các chương trình shell, bao gồm chuỗi các lệnh. Soạn và thực thi chương trình shell• Sử dụng mọi trình soạn thảo dạng text: – vi, emacs, gedit – Nội dung bao gồm các câu lệnh được sử dụng trên dòng lệnh của Linux – Các câu lệnh trên cùng 1 dòng phải phân tách bằng dấu ;• Thiết lập quyền thực thi cho chương trình shell – chmod o+x ten_file• Thực thi – bash ten_file – sh ten_file – ./ten_file Ví dụ shell đơn giản• $vi first# My first shell scriptclearecho Hello $USERecho Today is c ;dateecho Number of user login : c ; who | wc –lecho Calendar• $ chmod 755 first• $./first 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 – Xem hoặc truy nhập giá trị các biến: • $tên_biến • echo $HOME • echo $USERNAME Phải có dấu $ trước tên biếnMột số biến hệ thống Định nghĩa các biến của người dùng• Cú pháp: tên_biến=giá_trị• In giá trị của biếnecho $tên_biến• Ví dụ:no=10echo $no Quy tắc đặt tên biến• Tên biến phải bắt đầu bằng ký tự – HOME – SYSTEM_VERSION – no – vech• Không được để dấu cách hai bên toán tử = khi gán giá trị cho biến – no=10 # là đúng – no =10 # là sai – no = 10 #là sai Quy tắc đặt tên biến• Tên biến có phân biệt chữ hoa, thường – Các biến sau đây là khác nhau: no=10 No=11 NO=20 nO=2• 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ếnVí dụ Lệnh echo• Cú pháp: echo [option] [string, variables…]• In một số ký tự đặc biệt trong tham số với tùy chọn -e: a alert (bell)  backspace c suppress trailing new line new line carriage return horizontal tab \ backslash• Ví dụ:$ echo -e An apple a day keeps away a doctor Các phép toán số học• Để thực hiện các phép tính toán số học cần dùng câu lệnh:expr biểu_thức_số_họcCác toán tử: +, -, *, /, %• Ví dụ:expr 1 + 3expr 2 - 1expr 10 / 2expr 20 % 3expr 10 * 3 # phép nhân là * .echo `expr 6 + 3` # đánh giá giá trị biểu thức 6+3 và inra. Các dấu ngoặc• Dấu ngoặc kép “ ” – Tất cả các 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 hoặc $• Dấu nháy ngược ` (cùng nút với dấu ~) – Yêu cầu thực hiện lệnhVD: $ echo “Today is `date`” Today is Tue Jan … Trạng thái kết thúc câu lệnh• Linux mặc định trả về: – 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• Kiểm tra trạng thái kết thúc một câu lệnh – $? : cho biết trạng thái kết thúc câu lệnh trước đó• Ví dụ rm unknow1file Nếu không có file này, hệ thống thông báo rm: cannot remove `unkowm1file: No such file or directory Nếu thực hiện lệnh: $ echo $? Sẽ in ra giá trị khác 0. Câu lệnh đọc dữ liệu đầu vào• Đọc dữ liệu từ bàn phím và ghi và biến• Cú pháp: Read variable1 Các tham số dòng lệnh• Một chương trình shell có thể có các tham số dòng lệnh $myshell foo bar• Tham chiếu: – tên lệnh: $0 – các tham số: $1, $2… – Số các tham số: $# Cấu trúc rẽ nhánh if• Cú pháp: if điều_kiện then câu lệnh 1 … fiCâu lệnh 1 được thực hiện khi điều_kiện làđúng hoặc trạng thái kết thúc của điều_kiệnlà 0 (kết thúc thành công). Cấu trúc rẽ nhánh if• Ví dụ, tệp showfile có nội dung:• Thực thi tệp: $./showfile foo• $1 cho giá trị foo Cấu trúc rẽ nhánh if … else … fi• Cú phápif điều_kiện then câu_lệnh_1 ….else câu_lệnh_2fi 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 – 0, trường hợp còn lại• Cú pháp: Test biểu_thức [biểu thức]• Biểu thức có thể bao gồm: – Số nguyên – Các kiểu tiệp – Xâu ký tự ...