Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 42 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
42
Dung lượng
1,37 MB
Nội dung
Đặc trưng của Shell scripts Các biến của script Các lệnh nội trú (built-in) Các cấu trúc điều khiển Các hàm Gỡ rối (debug) ! ShellinUNIX " # " $% Chương trình shell " & " '()*&+&,)-./ " 01&+&&23&4 567 89+ :; < =7&>&?!!& Các shell khác nhau không tương thích hoàn toàn " 1&@,!A&!B! Execute " 1 st #sh <tên chương trình>CD!E:F " 2 nd #chmod u+x <tên chương trình> #<tên chương trình>CD!E:F G #23&&?!H!& Chỉ thị tên shell " 6)IJK)I LMNDDD!O LMPP! QA!.R&? Comment " LAK)I&)SS6 " #*T&@,2&U)V " #WX!,&)7&. Code " .!@Y&Z![>\](& ^ #+&SQ!& Truy xuất biến " _NJDSO " _`NJDJOa b #+&SQ!& Biến môi trường " cd&+&&%&+ " =>e&.\JQ.profilethư mục riêng &?>RZ " NSD$D>ROfN+DXO Biến người dùng " !Q " #!!!@ " NJDSOfN+DXO g$&*2&+&%)I2f Biến tự động " #W)h& i jS$>R klm '>1&J&?>RZB lno '>1&&U>>RZB m =>Rp&?!-PP!7&PP\!/ 'm8l E.+&4&EB m8 'J>RZ)q@,.E n' r s jS() Cho phép gọi script với các tham số trên dòng lệnh " $0 'J&?!& " $1-$9 s!E)IJ " ${>10} '!EUt " $# E>e!E " $@ '2&u!E&?!&TX >Y4vJ " $* '2&u&+&!w&?!& >Y4V t jS() Biến định nghĩa trước " $? lqu@x&?.&4[>Y&)* " $! o&?.I2)>e&&4[&\y !&.R " $$ o&?!H!&.R [...]... : $var1" echo "The rest : $var2" % /foo Unix MS-DOS Windows 95 Windows NT MacOS First word : Unix The rest : MS-DOS Windows 95 Windows NT MacOS 20 Lệnh nội trú - set • set `` – Không hiện lên màn hình kết quả thực hiện `` – Kết quả được gán tương ứng cho các biến tự động (từ $1 trở đi) – Ví dụ #!/bin/sh # Hien thoi diem chay chuong trinh nay set `date` echo "Thoi gian: $4 $5" echo "Thu:... • Toán tử nhận dạng mẫu trong 16 Lệnh nội trú của shell • Không cần tạo process con khi chạy (nằm trong mã của shell) – cd, set, • Nhận biết lệnh nội trú hay không – type 17 Lệnh nội trú - echo • Hiển thị các tham số đi sau – Như printf() \a \b \c \E \n \r \t \v \\ \num alert (bell) backspace suppress trailing newline escape character new line carriage return horizontal tab vertical tab backslash... trúc của shell • Kiểm tra nhiều điều kiện – Kiểm tra tệp – Biểu thức số – Biểu thức logic 26 Lệnh test (tiếp) • Kiểm tra tệp 27 Lệnh test (tiếp) • Biểu thức số 28 Lệnh test (tiếp) • Biểu thức logic 29 Lệnh test Cách sử dụng • Dạng tường minh #!/bin/sh if test $1 = hello then echo hello world fi • Dạng biểu thức toán #!/bin/sh if [ $1 = hello ] then echo hello world fi 30 Lệnh test – ví dụ • #!/bin/sh... if test $1 = hello then echo hello world fi • #!/bin/sh if [ $1 -gt $2 -o $1 -eq $2 ] then echo $1 is greater than or equal to $2 fi • #!/bin/sh [ $# -eq 0 ] && echo You entered no parameters 31 Cấu trúc điều khiển case • case value in pattern1) commands1 ;; pattern2) commands2 ;; esac • Ví dụ #!/bin/sh echo -n "Quit ? > " read answer case "$answer" in Y* | y* ) ANSWER="YES" ;; N* | n* ) ANSWER="NO"... đương #!/bin/sh echo -n "there are " n=`ls | wc -l` echo "$n files here" #!/bin/sh echo "there are \c" n=`ls | wc -l` echo "$n files here" 19 Lệnh nội trú - read • Đọc từ bàn phím vào các biến – read variable-list • Từ đầu tiên được đọc vào biến đầu tiên • Số biến không đủ: tất cả vào biến cuối cùng • Ví dụ % cat foo #!/bin/sh read var1 var2 echo "First word : $var1" echo "The rest : $var2" % /foo Unix. .. trừ (-), nhân (*), chia (/), mod (%) • $cat cong.sh #!/bin/sh # Tinh va in hai so tong = `expr $1 + $2` echo "Tong = $tong" $cong.sh 5 6 22 Cấu trúc rẽ nhánh if-then • Condition – TRUE : 0 – FALSE : # 0 – command [options] parameters • «then», «else», «fi»: commands – if cond ; then 23 Cấu trúc rẽ nhánh… (tiếp) • Kiểm tra thư mục rỗng hay không #!/bin/sh if ls > /dev/null then echo Directory not empty... thì gán cho nó giá trị value – Qui định giá trị ngầm định cho tham số vắng mặt • Ví dụ: script foo #!/bin/sh VAL=`expr ${1:-0} + ${2:-0} + ${3:-0}` echo $VAL $ /foo 12 3 8 $ /foo 5 7 $ /foo 13 11 Lệnh shift • Trượt các tham số 1 bậc sang trái – Lấy các tham số >9 vào các $i • Ví dụ : script demo #!/bin/sh echo $1 $2 $3 shift echo $1 $2 $3 $./good a b c d 12 Lệnh shift (tiếp) • Mỗi lần sử dụng shift,... y* ) ANSWER="YES" ;; N* | n* ) ANSWER="NO" ;; b?? ) ANSWER="BOF" ;; *) ANSWER="MAYBE" ;; esac echo $ANSWER 32 Cấu trúc lặp while, for, until • While while condition do commands1 done • For for variable in list do commands1 done • until until condition do commands1 done 33 Ví dụ vòng lặp while 34 Ví dụ vòng lặp For 35 Ví dụ vòng lặp Until 36 . foo #!/bin/sh read var1 var2 echo "First word : $var1" echo "The rest : $var2" % ./foo Unix MS-DOS Windows 95 Windows NT MacOS First word : Unix The rest : MS-DOS Windows 95 Windows. Đặc trưng của Shell scripts Các biến của script Các lệnh nội trú (built -in) Các cấu trúc điều khiển Các hàm Gỡ rối (debug) ! Shell in UNIX " # " $% Chương. đi sau " >Q-/ a alert (bell) backspace c suppress trailing newline E escape character
new line
carriage return horizontal tab v vertical tab \ backslash
um the