Chuyên đề Hệ điều hành Linux - Bài 13: Lập trình Shell - Lê Hà Minh

Giới thiệu về shell
qBiến trong shell
qTạo shell script
qBiểu thức số học
qBiểu thức so sánh
qCấu trúc điều khiển
qHàm
qChương trình mẫu 
pdf 29 trang xuanthi 30/12/2022 640
Bạn đang xem 20 trang mẫu của tài liệu "Chuyên đề Hệ điều hành Linux - Bài 13: Lập trình Shell - Lê Hà Minh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfchuyen_de_he_dieu_hanh_linux_bai_13_lap_trinh_shell_le_ha_mi.pdf

Nội dung text: Chuyên đề Hệ điều hành Linux - Bài 13: Lập trình Shell - Lê Hà Minh

  1. Nội dung qGiới thiệu về shell qBiến trong shell qTạo shell script qBiểu thức số học qBiểu thức so sánh qCấu trúc điều khiển qHàm qChương trình mẫu
  2. Các file đặc biệt liên quan £ /etc/profile – file khởi động cho tất cả user, thực thi đối với login shell (tự động thực thi khi login vào máy) £ ~/.bash_profile – file khởi động cho từng user, thực thi đối với login shell £ ~/.bashrc – file khởi động cho từng interactive shell không phải là login shell £ ~/.bash_logout – file dọn dẹp khi thoát khỏi login shell
  3. Biến môi trường £ Ðiều khiển môi trường thực thi lệnh £ Một số biến môi trường thông dụng: HOME thư mục home SHELL chương trình shell hiện tại PATH đường dẫn để tìm các file thực thi USER tên user login TERM kiểu terminal hiện tại DISPLAY khai báo hiển thị cho X-Window PS1 dấu nhắc dòng lệnh LANG ngôn ngữ hiện tại
  4. Shell script £ File văn bản (thường có phần mở rộng .sh) chứa các lệnh (lệnh shell và chương trình) £ Ðược thông dịch bởi shell £ Có thể được gọi trong chính shell script khác £ Tham số được truyền trên dòng lệnh £ Dòng đầu thường có dạng #!/bin/bash £ Ghi chú: Dùng dấu #
  5. Tham số vị trí £ Tham số được truy xuất thông qua vị trí của nó £ Tham số vị trí có thể được gán lại bằng lệnh “set” (Xem thêm trong các bài thực hành) £ Các biến nội thao tác với tham số vị trí: $# số tham số được truyền $* tất cả các tham số $n tham số thứ n £ $ ./myscript source dest $0 -> ./myscript $1 -> source $2 -> dest
  6. Biểu thức số học £ Dùng let, expr hoặc $(( )) để gán £ Phép toán số học: ++, , +, -, *, /, %, ==, !=, >, <, &&, ||, £ let “a = 1 + 1” (a = 2) £ a=`expr $a “*” 6` (a = 12) £ a=$(($a “/” 4)) (a = 3) £ let “area = $len * $width” £ let “percent = $num / 100” £ let “remain = $n % $d”
  7. Phát biểu IF nPhát biểu IF nVí dụ if [ exp ]; then if [ “$1” = “” ]; then statements; echo “Enter value:” elif [ expr ]; then read num statements; else else let “num = $1” statements; fi fi
  8. Vòng lặp FOR £ Dạng 1: for var [in list]; do statements; done £ Dạng 2: for ((exp1; exp2; exp3)); do statements; done £ Ví dụ let “sum = 0” for num in 1 3 5; do let “sum = $sum + $num” done echo $sum
  9. Một số phát biểu khác £ BREAK – thoát khỏi vòng lặp £ CONTINUE – bỏ qua phần còn lại của vòng lặp £ EXIT – thoát khỏi shell script £ RETURN – trở về từ hàm hoặc shell script £ if [ $# -lt 2 ]; then echo “Usage: `basename $0` source dest” echo exit 1 fi
  10. Ví dụ về hàm isPrime() { # hàm main n=$1 echo -n “Nhap so n:" if [ $n -eq 0 –o $n –eq 1 ]; then isPrime $n return 0 if [ $? -eq 0 ];then fi echo “$n khong la SNT” for ((i=2;i<n;i++); do else let “k=$n%$i” if [ $k -eq 0 ];then echo “$n la SNT” return 0; fi fi exit 0 done return 1 }
  11. Xử lí mảng £ Khai báo: array[xx] hoặc declare –a array £ Truy xuất ${array[i]} £ ${array[@]} hoặc ${array[*]}: lấy tất cả phần tử của mảng £ ${#array[@]} hoặc ${#array[*]}: tổng số phần tử của mảng £ Xóa mảng: unset array[1] £ Cách khác: Array=( [xx]=XXX [yy]=YYY )
  12. Xử lí chuỗi £ Xóa chuỗi con: ${string#substring} ${string##substring} £ Thay thế chuỗi ${string/substring/replacement} ${string//substring/replacement}
  13. Debug Shell £ Dùng lệnh sh -x , ví dụ: £ sh -x SoNT.sh
  14. Cắt chuỗi với awk £ cú pháp: in ra trường thứ n awk -F ‘{ print $n}’ £ Mặc định ký tự ngăn cách là các khoảng trắng £ Ví dụ: lấy danh sách các user trong group “root” cat /etc/group | grep ^root | awk -F”;” ‘{ print $4 }’ | tr “,” “ “