Chương 8 của bài giảng Hệ điều hành UNIX-Linux trình bày về lập trình Shell. Trong chương này cung cấp cho người học một số nội dung như: Chương trình shell, trình soạn thảo văn bản trong Linux, các loại shell, các ký hiệu đặc biệt trong shell, sử dụng biến trong shell,... Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
Hệ điều hành UNIX-Linux Chương Lập trình Shell Unix operating system - Nguyen Tri Thanh - Sep-10 Chương trình shell Chương trình shell tập hợp câu lệnh viết file text Nó giống chương trình bat MSDOS có sức mạnh lớn nhiều Chương trình shell nhận liệu từ người dùng, từ file in kết hình Có thể dùng để tạo lệnh riêng cho Shell giúp tiết kiệm thời gian để làm cơng việc hàng ngày Các bước để tạo chương trình shell Sử dụng chương trình soạn thảo text để tạo file chương trình Thay ñổi thuộc tính file vừa tạo thêm thuộc tính khả thi: chmod +x /script.sh Có thể chạy ln chương trình lệnh: sh script.sh Các chương trình shell nên đặt sh Unix operating system - Nguyen Tri Thanh - Sep-10 Trình soạn thảo văn Linux • Trình soạn thảo vim Unix operating system - Nguyen Tri Thanh - Sep-10 Trình soạn thảo văn Linux • Trình soạn thảo mc Unix operating system - Nguyen Tri Thanh - Sep-10 Các loại shell Muốn xem loại shell có hệ thống ta sử dụng lệnh: cat /etc/shells Muốn xem shell tại: echo $SHELL Phần ñề cập ñến lập trình shell bash Unix operating system - Nguyen Tri Thanh - Sep-10 Các ký hiệu ñặc biệt shell Khi ñặt tên biến cần tránh xung ñột với ký tự ñặc biệt Unix operating system - Nguyen Tri Thanh - Sep-10 Sử dụng biến shell Biến hệ thống ñược Linux tạo quản lý (CHỮ IN HOA) Biến người dùng: ñược người dùng tạo quản lý (chữ thường) Unix operating system - Nguyen Tri Thanh - Sep-10 Quy tắc ñặt tên biến Tên biến phải bắt ñầu với ký tự chữ dấu gạch (_), ký tự chữ số Biến ñược khởi tạo ta gán giá trị cho biến Không thêm dấu cách vào trước sau dấu gán, gán giá trị cho biến Biến Linux phân biệt chữ HOA thường Tìm biến hợp lệ khong hợp lệ: no=10 new_variable=“Test” number= 10 1stnumber=10 Truy cập giá trị biến ta dùng ký tự $ trước tên biến, xóa biến sử dụng lệnh unset var echo $new_variable Lệnh echo [tùy chọn] [chuỗi, biến] dùng ñể hiển thị văn giá trị biến hình Tùy chọn: -n khơng hiển thị ký hiệu xuống dịng, -e hiển thị ký tự ẩn ñặc biệt sau chuỗi Unix operating system - Nguyen Tri Thanh - Sep-10 Trích dẫn (quoting) Trích dẫn cách bao quanh chuỗi cặp dấu nháy Cho phép số ký tự ñặc biệt giữ nguyên ký tự bình thường Có loại trích dẫn mạnh (‘ …’) trích dẫn yếu (“ … ”) Trích dẫn yếu biên dịch biến chuỗi echo “Giá trị biến là: $var” Trích dẫn mạnh bảo tồn tồn ký tự chuỗi echo ‘Giá trị tham số ñầu tiên là: $var’ → Giá trị tham số ñầu tiên là: $var ls -l '[Vv]*‘ → ls: [Vv]*: No such file or directory Unix operating system - Nguyen Tri Thanh - Sep-10 Tính tốn số học biến Tính tốn shell thực với đối số ngun Các phép tốn gồm có: cộng (+), trừ (-), nhân (*), chia (/), mod (%) Tính tốn shell có dạng: `expr ` Ví dụ var1=10 var2=20 sum=`expr $var1 + $var2 ` product=`expr $var1 \* $var2 ` echo “Tổng $var1 $var2 là: $sum, tích chúng $product” Unix operating system - Nguyen Tri Thanh - Sep-10 10 Ví dụ lệnh case echo; echo "Hit a key, then hit return." read Keypress case "$Keypress" in [a-z] ) echo "Lowercase letter";; [A-Z] ) echo "Uppercase letter";; [0-9] ) echo "Digit";; * ) echo "Punctuation, whitespace, or other";; esac # Allows ranges of characters in [square brackets] Lệnh read var ñọc giá trị nhập vào từ bàn phím, sau ấn Enter lưu giữ vào biến var Unix operating system - Nguyen Tri Thanh - Sep-10 24 Cấu trúc lặp for Lặp ñi lặp lại số lần khối lệnh for variable in danh_sách # Khối lệnh thao tác với giá trị $variable done Ví dụ for i in echo "Welcome $i times" done In bảng nhân số n=$1 for i in 10 echo "$n * $i = `expr $i \* $n`" done Unix operating system - Nguyen Tri Thanh - Sep-10 25 Cấu trúc lặp for Lặp ñi lặp lại số lần khối lệnh for (( expr1; expr2; expr3 )) # Thực khối lệnh expr2 có giá trị TRUE done Ví dụ for (( i = ; i tên_file_ñầu_ra ls > danh_sach_file ðịnh hướng ñầu vào Lệnh < tên_file_ñầu_vào cat < a.txt sort < a.txt > a.sorted.txt tr “[a-z]” “[A-Z]” < a.txt > b.txt Unix operating system - Nguyen Tri Thanh - Sep-10 35 ðịnh hướng ñầu vào vào khối lệnh ðưa liệu vào khối lệnh Có thể lấy liệu từ file filename=“dulieu.txt” name=“” while `true` read name # ðọc từ file thay từ bàn phím echo $name if [[ "$name" = Smith ]] then break fi done