intTypePromotion=1
ADSENSE

Bài giảng Nhập môn Hệ điều hành Unix (Bài giảng tuần 5) – Nguyễn Hải Châu

Chia sẻ: Năm Tháng Tĩnh Lặng | Ngày: | Loại File: PDF | Số trang:4

68
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng tuần 5 của môn Nhập môn Hệ điều hành Unix tiếp tục cung cấp cho người học các nội dung kiến thức về lập trình shell trên Unix-Linux. Trong bài này sẽ trình bày về các toán tử trong shell và các cấu trúc điều khiển trong shell. Hy vọng thông qua bài giảng này, người học sẽ nắm bắt được các kiến thức cơ bản về lập trình shell.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Nhập môn Hệ điều hành Unix (Bài giảng tuần 5) – Nguyễn Hải Châu

  1. Nội dung „ Lập trình shell trên Unix-Linux Nhập môn hệ điều hành Unix „ Các toán tử trong shell „ Các cấu trúc điều khiển trong shell Nguyễn Hải Châu Khoa Công nghệ Thông tin Trường Đại học Công nghệ Đại học Quốc gia Hà Nội (Bài giảng tuần 5) Các toán tử string Các toán tử string Toán tử Chức năng ${var:+ word} Nếu biến tồn tại và xác định thì trả về word, còn không thì trả về null ${var:- word} Nếu biến tồn tại và xác định thì trả ${var:?message} Nếu biến tồn tại và xác định thì trả về giá trị của nó, nếu không thì về giá trị của nó, còn không thì trả về word hiển thị “bash: $var:$message” và ${var:= word} Nếu biến tồn tại và xác định thì trả thoát ra khỏi lệnh/tập lệnh hiện về giá trị của nó, nếu không thì thời. gán biến thành word, sau đó trả ${var: Trả về một xâu con của var bắt đầu về giá trị của nó offset[:length]} tại offset của độ dài length. Nếu length bị bỏ qua, toàn bộ xâu từ offset sẽ được trả về. Ví dụ minh họa toán tử string Ví dụ (tiếp) Xét một biến shell tên là status được khởi tạo giá trị „ Bây giờ sử dụng lệnh unset để xoá biến status, và thực “defined”. Sử dụng các toán tử string cho kết quả hiện vẫn các lệnh đó, được output như sau: status như sau: unset status echo ${status:-undefined} echo ${status:-undefined} defined undefined echo ${status:=undefined} echo ${status:=undefined} undefined defined echo ${status:+undefined} echo ${status:+undefined} undefined undefined unset status echo ${status:?Dohhh\! undefined} echo ${status:?Dohhh\! undefined} defined bash:status Dohhh! Undefined 1
  2. Các toán tử pattern-matching Các toán tử pattern-matching Toán tử Chức năng ${var%%patt Xoá bỏ phần khớp dài nhất của ern} pattern ở cuối var và trả về phần ${var#pattern} Xoá bỏ phần khớp (match) ngắn còn lại nhất của pattern trước var và trả ${var/pattern/ Thay phần khớp dài nhất của pattern về phần còn lại string} trong var bằng string. Chỉ thay phần ${var##pattern} Xoá bỏ phần khớp (match) dài nhất khớp đầu tiên. Toán tử này chỉ có của pattern trước var và trả về trong bash 2.0 hay lớn hơn. phần còn lại ${var//pattern Thay phần khớp dài nhất của pattern ${var%pattern} Xoá bỏ phần khớp ngắn nhất của /string} trong var bằng string. Thay tất cả pattern ở cuối var và trả về phần các phần khớp. Toán tử này có còn lại trong bash 2.0 hoặc lớn hơn. Ví dụ: Tách tên thư mục/tệp Ví dụ: Tách tên thư mục/tệp #!/bin/bash „ Kết quả: ########################### ${myfile##*/} = ide.txt myfile=/usr/src/linux/Documentation/ide.txt basename $myfile = ide.txt echo ‘${myfile##*/}=’ ${myfile##*/} ${myfile%/*} = /usr/src/linux/Documentation echo ‘basename $myfile =’ $(basename dirname $myfile = $myfile) /usr/src/linux/Documentation echo ‘${myfile%/*}=’ ${myfile%/*} echo ‘dirname $myfile =’ $(dirname $myfile) Các toán tử so sánh chuỗi Các toán tử so sánh số học Toán tử Ý nghía Toán tử Ý nghĩa str1 = str2 str1 bằng str2 -eq bằng str1 != str2 str1 khác str2 -ge lớn hơn hoặc bằng -n str str có độ dài lớn hơn 0 -gt lớn hơn (khác null) -le nhỏ hơn hoặc bằng -z str str có độ dài bằng 0 (null) -lt nhỏ hơn -ne khác 2
  3. Điều khiển luồng trong shell Cấu trúc rẽ nhánh if „ Các cấu trúc điều khiển luồng của bash bao gồm: if điều kiện if – Thi hành một hoặc nhiều câu lệnh nếu có điều then „ kiện là true hoặc false. „ for – Thi hành một hoặc nhiều câu lệnh trong một Các câu lệnh số cố định lần. „ while – Thi hành một hoặc nhiều câu lệnh trong khi [elif điều kiện một điều kiện nào đó là true hoặc false. „ until – Thi hành một hoặc nhiều câu lệnh cho đến Các câu lệnh] khi một điều kiện nào đó trở thành true hoặc false. [else „ case – Thi hành một hoặc nhiều câu lệnh phụ thuộc vào giá trị của biến. Các câu lệnh] select – Thi hành một hoặc nhiều câu lệnh dựa trên „ một khoảng tuỳ chọn của người dùng. fi Toán tử AND và OR logic Ví dụ „ command1 && command2 if cd /home/kwall/data „ Câu lệnh command2 chỉ được chạy khi và then chỉ khi command1 trả về trạng thái là số if cp datafile datafile.bak 0 (true). then „ command1 || command2 # more code here „ Câu lệnh command2 chỉ được chạy khi và fi chỉ khi command1 trả lại một giá trị khác fi 0 (false). rm myf && echo "File is removed successfully" || echo "File is not removed" Ví dụ (tiếp) Kiểm tra điều kiện với test if [ $1 -gt 0 ] Toán tử Điều kiện true -d file file tồn tại và là một thư mục then -e file file tồn tại echo "$1 is positive“ -f file file tồn tại và là một file bình thường elif [ $1 -lt 0 ] (không là thư mục hay file đặc biệt) then -r file file cho phép đọc echo "$1 is negative“ -s file file tồn tại và khác rỗng elif [ $1 -eq 0 ] -w file file cho phép ghi -x file file khả thi hoặc một thư mục cho phép then tìm kiếm tên file echo "$1 is zero“ -O file file của người dùng hiện tại else -G file file thuộc một trong các nhóm echo "Opps! $1 is not number, give number“ người dùng hiện tại là thành viên fi 3
  4. Ví dụ Ví dụ (tiếp) IFS=: if [ -0 $dir ]; then for dir in $PATH; echo -e "\tYou own $dir" do else echo $dir echo –e “\tYou don’t own $dir” if [ -w $dir ] fi then if [ -G $dir ]; then echo -e "\tYou have write permission in $dir" echo -e "\tYou are a member of $dir's group" else else echo –e “\tYou don’t have write permission in $dir” echo -e "\tYou aren't a member of $dir's group" fi fi done Vòng lặp for Ví dụ for var in for docfile in doc/*.doc do do Các câu lệnh có sử dụng $var cp $docfile ${docfile%.doc}.txt done done hoặc for (( expr1; expr2; expr3 )) for (( i = 1; i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2