Bài giảng Hệ điều hành mã nguồn mở - Chương 8: Lập trình Shell nâng cao cung cấp cho người học các kiến thức: List, hàm, buildin command, mảng, xử lý trên file. Đây lầ một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
TRƯỜNG ĐẠI HỌC SÀI GỊN CHƯƠNG 8: LẬP TRÌNH SHELL NÂNG CAO GV: LƯƠNG MINH HUẤN NỘI DUNG List Hàm Buildin command Mảng Xử lý file I LIST Kết nối lệnh lại với thực kiểm tra trước đưa r định • AND • OR I LIST Ví dụ: xem xét chương trình sau: Ta dùng AND để thay cho nhiều câu lệnh if I LIST Ví dụ: xem xét chương trình sau: Ta sử dụng OR để thay nhiều câu lệnh if I LIST AND (&&) Thực thi chuỗi lệnh kề nhau, lệnh sau thực lệnh trướ thực thi trả kết thành công Cú pháp: Statement1 && Statement2 &&… && Statementn Kết AND trả true tất Statement thực I LIST Ví dụ: Kết quả: hello in else I LIST OR (||) Thực thi chuỗi lệnh kề nhau, có lệnh trả true t việc thực thi ngừng lại (lệnh sau thực lệnh trước false) Cú pháp: Statement1 || Statement2 ||… || Statementn Kết OR trả true Statement trả true I LIST Ví dụ: Kết quả: hello in if I LIST Ta kết hợp AND OR để xử lý vấn đề logic rình: V XỬ LÝ TRÊN FILE Nhập liệu vào cuối file: V XỬ LÝ TRÊN FILE Xuất liệu từ file V XỬ LÝ TRÊN FILE awk: xử lý chuỗi awk công cụ thiết kế để làm việc với dòng liệ Nó làm việc nhiều cột nhiều dòng dòng li Nó hỗ trợ nhiều chức có sẵn, mảng hàm, t ngơn ngữ lập trình C Lợi lớn tính linh hoạt Cấu trúc kịch awk có dạng sau: V XỬ LÝ TRÊN FILE kịch awk thường bao gồm phần: BEGIN{ commands } => chứa khai báo thực thi t awk đọc nội dung liệu pattern { commands } => gồm có pattern (các điều kiện) dùn lọc nội dung dòng liệu { commands } khai bá thực thi dòng trùng khớp với pattern END{ commands } => chứa khai báo thực thi awk đọc xong nội dung liệu V XỬ LÝ TRÊN FILE Ký tự đặc biệt • FS: ký tự phân cách cột • RS: ký tự phân cách dòng • NR: tổng số dòng có file V XỬ LÝ TRÊN FILE $ awk '{ print $1 }' /etc/passwd $ awk '{ print "" }' /etc/passwd $ awk '{ print "hiya" }' /etc/passwd $ awk -F":" '{ print $1 $3 }' /etc/passwd $ awk -F":" '{ print "username: " $1 "\t\tuid:" $3" }' /etc/passwd V XỬ LÝ TRÊN FILE : er.sh while read line data=`echo $line | awk 'BEGIN{FS="-"}{print $1}'` if [ "$data" = “ABC" ] then echo $line | cut -d- -f2 break fi done < user.txt V XỬ LÝ TRÊN FILE user.txt ABC-Nguyen Van A DEF-Le Thi B XYZ-Tran Van C V XỬ LÝ TRÊN FILE Xử lý dòng file V XỬ LÝ TRÊN FILE Câu lệnh sed sed cơng cụ mạnh mẽ Linux giúp thực thao tác với văn tìm kiếm, chỉnh xóa Khác với text editor thơng thường, sed chấp nhận văn vào nội dung từ file có hệ thống từ stand input hay stdin Cú pháp: V XỬ LÝ TRÊN FILE Mặc định, sed in văn thay Để lưu t đổi vào tập tin, sử dụng tùy chọn -i Hoặc chuyển hướng vào file khác: V XỬ LÝ TRÊN FILE Nếu sử dụng cú pháp đề cập trên, sed thay xuất mẫu (pattern) dòng Nếu muốn thay tất xuất mẫu bản, cần thêm tham số g vào cuối sau: V XỬ LÝ TRÊN FILE Nếu muốn thay xuất thứ N mẫu bản, sử dụng dạng /N sau: V XỬ LÝ TRÊN FILE Xóa dòng trống kỹ thuật đơn giản với việc sử dụng sed Các khoảng trống đối chiếu với biểu thức qu ^$: BÀI TẬP Cho người dùng nhập nội dùng vào file Xuất file Thay từ file Thêm dòng vị trí file Kiểm tra file có ký tự số nào? ... khỏi shell gọi trả trạng thái lỗi n exit hữu dụng scripts, trả mã lỗi cho biết scrip thực thi thành cơng hay khơng Mã có nghĩa thành công III BUILD IN COMMAND expr Lệnh dùng để tính giá trị... tra trước đưa r định • AND • OR I LIST Ví dụ: xem xét chương trình sau: Ta dùng AND để thay cho nhiều câu lệnh if I LIST Ví dụ: xem xét chương trình sau: Ta sử dụng OR để thay nhiều câu lệnh... lực bên hàm, để khai báo biến ta dùng từ khóa local phía trước biến Biến tồn cục: có hiệu lực tồn chương trình Biến tồn khai báo bình thường, khơng cần dùng thêm từ khóa Ví dụ: II HÀM II HÀM Hàm