UIT-CE-LAB-HDH-Lab2

27 3 0
UIT-CE-LAB-HDH-Lab2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BÀI 2: LẬP TRÌNH TRONG MƠI TRƯỜNG SHELL I Phần lớp Tìm file có chuỗi main() Thực thi nhiều lệnh lúc dịng lệnh Ví dụ: $ mkdir myfolđer; cd myfolder; Thực thi script Cách đơn giản triệu gọi trình shell với tên tập tin script làm đối số Ví dụ: $ /bin/sh first.sh Cách gọi khác: Khi thực $first.sh thông báo command not found lúc mơi trường PATH khơng chứa đường dẫn hay ví trí thư mục hành Khi thực $PATH=$PATH: mơi trường chứa đường dẫn hay vị trí thư mục hành PATH: cho biết đường dẫn đến thư mục chứa tệp tin thực thi Đây nơi ta gọi lệnh shell mà không cần đường dẫn đầy đủ Thư mục thư mục đặc biệt, liên kết (biểu thị) đến thư mục thời Vì ta gọi file first.sh cách thêm / vào trước tên file : /first.sh Sử dụng biến Ví dụ dịng lệnh, bạn gán nội dung hiển thị biến sau: xinchao=Hello echo $xinchao  Kết in hình: Hello xinchao="I am here" echo $xinchao  Kết in hình: I am here xinchao=12+l echo $xinchao  Kết in hình: 12+1 • Giải thích: Gán giá trị vào biến xinchao thực hiên in giá trị biến qua lệnh echo “$tênbiến” Có thể gán giá trị biến chuỗi theo ba cách: tênbiến=giátrị hay tênbiến=‘giátrị’ tên biến =“giá trị” Sự khác ba cách cách thứ giá trị chuỗi không chứa dấu “ ; ” hay dấu cách “ ” shell nhận diện dấu kết thúc lệnh chuyển sang câu lệnh khác báo lỗi Cách thứ hai in kí tự chuỗi hành khơng in giá trị tốn tử mà biến chuỗi gán Cịn cách cịn lại in giá thị chuỗi giá trị biến gán Có thể sử dụng lệnh read để đọc nhập liệu người dùng đưa vào giữ lại biến để sử dụng Ví dụ: read yourname # nhập vào: XYZ echo "Hello " $yourname Chuyển hướng vào/ra Ví dụ: $cat < file1 $cat < file1 > file2 $cat file1 < file2 $date $date < login.time • Giải thích: Lệnh cat< lấy nội dung từ file đầu vào, lệnh cat > xuất nội dung ghi vào file đầu rag hi đè lênh nội dung file đầu trước Tương tự cho cat > cat >> ghi nối tiệp vào nội dung file đầu trước Riêng cat 2>và cat 2>> ghi đè ghi nối tiếp lỗi vào file đầu date khác cat, khơng kiểm tra đầu vào, biết phải tìm đầu vào đâu Đổi hướng khơng có tác dụng Ví dụ: $cat Xin chao >… > EOF (và gõ ENTER) • Giải thích: Lệnh catEOF hình xuất dòng giá trị vừa nhập lên shell Các kí tự đặc biệt kiểm sốt tiến trình 6.1 Ngoặc đơn ( ; ) Ví dụ: $ (date ; who) > system.status $ cat system.status • Giải thích: Lệnh $ (date ; who) > system.status thực thi lệnh date who ghi giá trị vào system.status 6.2 Dấu nháy ` ` (backquotes) (là dấu phím với dấu ~) Ví dụ: $ echo Logged in `datè > login.time • Giải thích: Lệnh thực thi khối lệnh back quote trước sau thực thi lệnh lại 6.3 Ống dẫn (Pipelines) Đầu (stdout) who (đáng lẽ hình), đầu vào (stdin) ls –l Ví dụ: $ (date ; who) | ls -l Dấu bọc chuỗi (quoting) - Backslash (\) Ví dụ 3-1: variables.sh #!/bin/sh myvar="Hi there" echo $myvar echo "message : $myvar" echo 'message : $myvar' echo "messgae : \$myvar" echo Enter some text read myvar echo '$myvar' now equals $myvar exit • Giải thích: Biến myvar tạo khởi gán giá trị chuỗi Hi there Nội dung biến sau hiển thị lệnh echo trường hợp bọc chuỗi nháy kép, nháy đơn dấu hiển thị ký tự đặc biệt Biến tham số (parameter variable) Ví dụ: $IFS= “A” $set foo bar bam $echo “$@” #cho kết foo bar bam $echo “$*” #cho kết fooAbarAbam $unset IFS $echo “$*” #cho kết foo bar bam • Giải thích: Lệnh IFS nhận giá trị đầu vào chuỗi, lệnh set cài đặt dối số, $@ nhận vào giá trị cài đặt, $* nhận vào giá trị $@ thay khoảng trắng ký tự đầu gán IFS Ví dụ3-2: try_variables.sh #!/bin/sh salutation="Hello" echo $salutation echo "The program $0 is now running" echo "The second parameter was $2" echo "The first parameter was $1" echo "The parameter list was $*" echo "The user's home directory is $HOME" echo "Please enter a new greeting" Ví du 3-4: elif_control.sh #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday if [ $timeofday = "yes" ]; then echo "Good morning" elif [ $timeofday = "no" ]; then echo "Good afternoon" else echo "Sorry, $timeofday not recognized Enter yes or no" exit fi exit 11 Vấn đề phát sinh với biến Ví du: 3-5: e lif_control2.sh #!/bin/sh echo -n "Is it morning? Please answer yes or no: " read timeofday if [ "$timeofday" = "yes" ]; then echo "Good morning" elif [ "$timeofday" = "no" ]; then echo "Good afternoon" else echo "Sorry, $timeofday not recognized Enter yes or no" exit fi exit 12 Lệnh for In giá trị chuỗi tập hợp Ví du 3-6: for_loop.sh #!/bin/sh for foo in bar fud 13 echo $foo done exit Ví du 3-7: for_loop2.sh #!/bin/sh for file in $(ls f*.sh); echo $file done 13 Lệnh while Ví dụ : for foo in 10 11 12 13 14 15 16 echo $foo done Ví du: 3-8: password.sh #!/bin/sh echo "Enter password" read trythis while [ "$trythis" != "secret" ]; echo "Sorry, try again" read trythis done exit Ví dụ: 3-9 while_for.sh #!/bin/sh foo=1 while [ "$foo" -le 16 ] echo "Here $foo" foo=$(($foo+1)) done exit 14 Lệnh until Ví dụ sau sử dụng lệnh until để chờ user đăng nhập: Ví dụ 3-10: until_user.sh #!/bin/sh echo "Locate for user " until who | grep "$1" > /dev/null sleep 60 done echo "***** $1 has just logged in *****" exit 15 Lệnh case Ví dụ 3-11 case1.sh #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday case "$timeofday" in esac exit "yes") echo "Good Morning";; "no" ) echo "Good Afternoon";; "y" ) echo "Good Morning";; "n" ) echo "Good Afternoon";; *) echo "Sorry, answer not recognised";; Ví du 3-12 case2.sh #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday case "$timeofday" in "yes" | "y" | "Yes" | "YES" ) echo "Good Morning";; "n*" | "N*" ) echo "Good Afternoon";; *) echo "Sorry, answer not recognised";; esac exit Đoạn code code file thực hành Em có sửa đoạn code : "n*" | "N*" thành [n]* | [N]* Vì đoạn code "n*" | "N*" phải nhập N* n* lệnh thực kết "Good Afternoon " Ví du 3-13 case3.sh #!/bin/sh echo "Is it morning? Please answer yes or no" read timeofday case "$timeofday" in "yes" | "y" | "Yes" | "YES" ) echo "Good Morning" echo "Up bright and early this morning?" ;; [nN]* ) echo "Good Afternoon" ;; *) echo "Sorry, answer not recognised" echo "Please answer yes or no" exit ;; esac exit II Phần tập Bài 2: viết chương trình cho phép nhập vào tên mssv Kiểm tra mssv khơng trùng với bắt nhập lại In hình kết Phần code: Phần kết quả: Bài 3: viết chương trình cho phép nhập vào số n Kiểm tra n < 10 bắt nhập lại Tính tổng số từ 1 n In kết hình

Ngày đăng: 04/05/2017, 11:41

Tài liệu cùng người dùng

Tài liệu liên quan