1. Trang chủ
  2. » Công Nghệ Thông Tin

ngôn ngữ lập trỉnh_1 pptx

5 193 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 29,24 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nói chung caˆ´u trúc có da ˙ng sau: fornameinwordsdolistdone Quy luaˆ ˙t xây du˙’ng danh sách leˆ˙nh list gioˆ´ ng trong toán tu’’if.. This is trial version www.adultpdf.com... Taˆ ˙p ti

Trang 1

Ghi d¯oa

˙n trên vào moˆ

˙t taˆ

˙p tin (ví du˙,select.sh), thay d¯oˆ’i d¯eˆ’ taˆ

˙p tin thành kha’ thi (ví du

˙, chmod 755 select.sh), và cha˙y (./select.sh) Trên màn hình se˜ hieˆ

˙n ra câu ho’i sau:

kênh giao tác

Ba

˙n thích dùng OS nào?

2) Gnu Hurd 4) MacOSX 6) QNX

#?

Hãy nhaˆ´n moˆ

˙t trong 7 soˆ´ d¯u’a ra (tu`’ 1 d¯eˆ´n 7) Neˆ´u ba

˙n nhaˆ

˙p 4 (nhaˆ´n ca’ <Enter>), thì se˜ thaˆ´y thông báo sau:

kênh giao tác

Ba

˙n d¯ã cho˙n MacOSX

3.8.5 Toán tu’’ for

Toán tu’’forlàm vieˆ

˙c có khác moˆ

˙t chút so vo´’ifortrong các ngôn ngu˜’laˆ

˙p trình thông thu’o`’ng Thay vì ta˘ng hoa˘

˙c gia’m giá tri˙cu’a moˆ

˙t bieˆ´n soˆ´ nào d¯ó (lên hoa˘

˙c xuoˆ´ ng) moˆ

˙t d¯o’n vi

˙sau moˆ˜i vòng la˘

˙p, thì nó gán giá tri˙tieˆ´p theo trongdanh sách tu`’ d¯u’a sa˘˜ncho bieˆ´n d¯ó trong moˆ˜i vòng la˘

˙p Nói chung caˆ´u trúc có da

˙ng sau:

fornameinwordsdolistdone

Quy luaˆ

˙t xây du˙’ng danh sách leˆ˙nh (list) gioˆ´ ng trong toán tu’’if Ví du

˙ Script sau ta˙o các taˆ

˙p tinfu1, fu2, vàfu3:

kênh giao tác

for a in 1 2 3 ; do

touch fu$a

done

Có theˆ’ gõ ba dòng này trên moˆ

˙t dòng leˆ

˙nh, keˆ´t qua’ thu d¯u’o

˙’c tu’o’ng tu˙’ vo´’i script Da˙ng toˆ’ng quát cu’a toán tu’’fornhu’ sau:

forname [inword; ]dolist ;done

D

¯ aˆ`u tiên cu˜ng xa’y ra su

˙’ khai trieˆ’n tu`’wordtheo quy luaˆ

˙t khai trieˆ’n bieˆ’u thu´’c (xem trên) Sau d¯ó bieˆ´nnamelaˆ`n lu’o

˙’t d¯u’o˙’c gán các giá tri˙thu d¯u’o

˙’c tu`’ su˙’ khai trieˆ`n này, và thu˙’c hieˆ˙n danh sách leˆ

˙nhlisttrong moˆ˜i laˆ`n nhu’ vaˆ

˙y Neˆ´u không có "in word", thì danh sách leˆ

˙nh list d¯u’o

˙’c thu˙’c hieˆ˙n moˆ

˙t laˆ`n cho moˆ˜i tham bie´ n viˆ

˙ trí d¯ã d¯u’a ra Trên Linux có chu’o’ng trìnhseq, tieˆ´p nhaˆ

˙n hai soˆ´ nguyên làm tham soˆ´, và d¯u’a ra chuoˆ˜i taˆ´t ca’ các soˆ´ na˘`m giu˜’a hai soˆ´ này (coˆ

˙ng thêm ca’ chúng) Nho`’ câu leˆ

˙nh này có theˆ’ su’’ du

˙ngforcu’abashlàm vieˆ

˙c nhu’ toán tu’’fortrong các ngôn ngu˜’ laˆ

˙p trình thông thu’o`’ng D¯ eˆ’ làm d¯u’o

˙’c d¯ieˆ`u này chı’ caˆ`n vieˆ´t vòng la˘

˙pfornhu’ sau:

kênh giao tác

for a in $( seq 1 6 ) ; do

cat fu$a

done

Câu leˆ

˙nh (script) này d¯u’a ra màn hình noˆ

˙i dung cu’a 10 taˆ

˙p tin (neˆ´u có): "fu1", , "fu10" This is trial version

www.adultpdf.com

Trang 2

48 Bash

3.8.6 Toán tu’’ while và until

Toán tu’’whilelàm vieˆ

˙c tu’o’ng tu

˙’ nhu’if, nhu’ng vòng la˘

˙p các câu leˆ

˙nh trong list2chı’ thu

˙’c hieˆ˙n khi d¯ieˆ`u kieˆ

˙n còn d¯úng, và se˜ ngu`’ng khi d¯ieˆ`u kieˆ

˙n không tho’a mãn Caˆ´u trúc có da

˙ng nhu’ sau:

whilelist1dolist2done

Ví du

˙:

kênh giao tác

while [ -d directory ] ; do

ls -l directory >> logfile

echo SEPARATOR >> logfile

sleep 60

done

Chu’o’ng trình (script) trên se˜ theo dõi và ghi la

˙i noˆ

˙i dung cu’a thu’ mu

˙cdirectorytheo tu`’ng phút neˆ´u thu’ mu

˙c còn toˆ`n ta

˙i Toán tu’’untiltu’o’ng tu

˙’ nhu’ toán tu’’while: untillist1dolist2done

D

¯ ieˆ’m khác bieˆ

˙t na˘`m o’’ choˆ˜, su’’ du

˙ng giá tri˙phu’ d¯i

˙nh cu’a d¯ieˆ`u kieˆ

˙nlist1, tu´’c làlist2 thu

˙’c hieˆ˙n, neˆ´u câu leˆ

˙nh cuoˆ´ i cùng trong danh sách list1 tra’ la

˙i tra˙ng thái thoát ra khác không

3.8.7 Các hàm soˆ ´

Cú pháp Heˆ

˙vo’bashcho phép ngu’o`’i dùng ta

˙o các hàm soˆ´ cho mình Hàm soˆ´ làm vieˆ

˙c và d¯u’o

˙’c su’’ du˙ng gioˆ´ ng nhu’ các câu leˆ

˙nh thông thu’o`’ng cu’a heˆ

˙ vo’, tu´’c là chúng ta có theˆ’ tu

˙’ ta˙o các câu leˆ

˙nh mo´’i Hàm soˆ´ có caˆ´u trúc nhu’ sau:

functionname() {list}

Ho’n nu˜’a tu`’functionkhông nhaˆ´t thieˆ´t pha’i có,namexác d¯i

˙nh tên cu’a hàm (dùng d¯eˆ’ go

˙i hàm), còn phaˆ`n thâm cu’a hàm soˆ´ ta

˙o bo’’i danh sách các câu leˆ

˙nhlist, na˘`m giu˜’a{và} Các câu leˆ

˙nh này se˜ d¯u’o

˙’c thu˙’c hieˆ˙n moˆ˜i khi tênnamed¯u’o

˙’c go˙i (gioˆ´ ng nhu’ moˆ

˙t leˆ

˙nh thông thu’o`’ng) Caˆ`n chú ý ra˘`ng hàm có theˆ’ là d¯eˆ

˙qui, tu´’c là go

˙i hàm soˆ´ o’’ ngay trong phaˆ`n thân cu’a

nó Hàm soˆ´ thu

˙’c hieˆ˙n trong pha˙m vi heˆ

˙ vo’ hieˆ

˙n tho`’i: không có tieˆ´n trình mo´’i nào d¯u’o

˙’c cha˙y khi biên di

˙ch hàm soˆ´ (khác vo´’i vieˆ

˙c cha˙y script).

3.8.8 Tham soˆ ´

Khi hàm soˆ´ d¯u’o

˙’c go˙i d¯eˆ’ thu

˙’c hieˆ˙n, các tham soˆ´ cu’a hàm se˜ tro’’ thành các tham bieˆ´n vi

˙trí

(positional parameters, xem trên) trong tho`’i gian thu

˙’c hieˆ˙n hàm này Chúng d¯u’o

˙’c d¯a˘˙t các tên nhu’$n, trong d¯ón là soˆ´ cu’a tham soˆ´ mà chúng ta muoˆ´n su’’ du

˙ng Vieˆ

˙c d¯ánh soˆ´ ba˘´t d¯aˆ`u tu`’

1, nhu’ vaˆ

˙y$1là tham soˆ´ d¯aˆ`u tiên Cu˜ng có theˆ’ su’’ du

˙ng taˆ´t ca’ các tham soˆ´ moˆ

˙t lúc nho`’$*,

và d¯u’a ra soˆ´ thu´’ tu

˙’ cu’a tham soˆ´ nho`’$#Tham soˆ´ vi

˙trí soˆ´ 0 không thay d¯oˆ’i Trong khi thu

˙’c hieˆ

˙n neˆ´u ga˘

˙p câu leˆ

˙nh noˆ

˙i trúreturn(trong phaˆ`n thâm cu’a hàm), thì hàm soˆ´ se˜ bi

˙du`’ng la

˙i

và quyeˆ`n d¯ieˆ`u khieˆ’n d¯u’o

˙’c trao cho câu leˆ˙nh d¯u´’ng sau hàm Khi thu

˙’c hieˆ˙n xong hàm soˆ´ , các tham bieˆ´n vi

˙trí và tham bieˆ´n d¯aˆ

˙c bieˆ

˙t#se˜ d¯u’o

˙c tra’ la˙i các giá tri˙mà chúng có tru’o´’c khi cha

˙y hàm Bieˆ ´ n noˆ

˙ i boˆ ˙ (local)

Neˆ´u muoˆ´ n ta

˙o moˆ

˙t tham bieˆ´n d¯i

˙a phu’o’ng, có theˆ’ su’’ du

˙ng tu`’ khóalocal Cú pháp d¯u’a ra bieˆ´n d¯i

˙a phu’o’ng gioˆ´ng heˆ

˙t các tham bieˆ´n khác, chı’ có d¯ieˆ`u caˆ`n d¯u´’ng sau tu`’ khóa local: This is trial version

www.adultpdf.com

Trang 3

local name=value Du’o´’i d¯ây là moˆ

˙t ví du˙hàm soˆ´ , thu

˙’c hieˆ˙n công vieˆ

˙c cu’a leˆ

˙nhseqd¯ã nha˘´c d¯eˆ´n o’’ trên:

kênh giao tác

seq()

{

local I=$1;

while [ $2 != $I ]; do

{

echo -n "$I ";

I=$(( $I + 1 ))

};

done;

echo $2

}

Caˆ`n chú ý d¯eˆ´n tùy cho

˙n-ncu’aecho, nó (tùy cho˙n) hu’y bo’ vieˆ

˙c ta˙o dòng mo´’i Ma˘

˙c dù tùy cho

˙n này không có nhieˆ`u ý nghı˜a vo´’i mu

˙c d¯ích chúng ta muoˆ´ n o’’ d¯ây, nhu’ng se˜ raˆ´t có ích trong các hàm soˆ´ vo´’i mu

˙c d¯ích khác Hàm soˆ ´ tính giai thu`’a fact Moˆ

˙t ví du˙ khác:

kênh giao tác

fact()

{

if [ $1 = 0 ]; then

echo 1;

else

{

echo $(( $1 * $( fact $(( $1 1 )) ) ))

};

fi

}

D

¯ ây là hàm soˆ´ giai thu`’a, moˆ

˙t ví du˙ cu’a hàm d¯eˆ

˙ qui Hãy chú ý d¯eˆ´n su

˙’ khai trieˆ’n soˆ´ ho

˙c,

và phép theˆ´ các câu leˆ

˙nh.

3.9 Script cu’a heˆ

˙ vo’ và leˆ ˙ nh source

Script cu’a heˆ

˙ vo’ chı’ là các taˆ

˙p tin có chu´’a chuoˆ˜i leˆ

˙nh Tu’o’ng tu

˙’ hàm soˆ´ script có theˆ’ d¯u’o

˙’c thu

˙’c hieˆ˙n nhu’ moˆ

˙t câu leˆ

˙nh Cú pháp truy caˆ

˙p d¯eˆ´n các tham soˆ´ cu˜ng nhu’ hàm soˆ´ Trong các tru’o`’ng ho

˙’p thông thu’o`’ng khi cha˙y script se˜ có moˆ

˙t tieˆ´n trình mo´’i d¯u’o

˙’c cha˙y D¯ eˆ’ có theˆ’ thu˙’c hieˆ

˙n script o’’ trong ba’nbashhieˆ

˙n tho`’i, caˆ`n su’’du

˙ng câu leˆ

˙nhsource, hay moˆ

˙t daˆ´u chaˆ´m "." (d¯oˆ`ng nghı˜a cu’a source) Trong tru’o`’ng ho

˙’p này script chı’ d¯o’n gia’n là moˆ˙t tham soˆ´ cu’a leˆ

˙nh nói trên Câu leˆ

˙nh se˜ có da

˙ng:

source filename [arguments]

Câu leˆ

˙nh này d¯o

˙c và thu˙’c hieˆ˙n các câu leˆ

˙nh có trong taˆ

˙p tinfilenametrong môi tru’o`’ng

hieˆ

˙n tho`’i, và tra’ la

˙i giá tri˙, xác d¯i

˙nh bo’’i câu leˆ

˙nh cuoˆ´ i cùng cu’afilename Neˆ´ufilename không chu´’a daˆ´u ga

˙ch chéo, thì d¯u’o`’ng daˆ˜n, lieˆ

˙t kê trong bieˆ´n soˆ´ PATH, se˜ d¯u’o

˙’c su’’ du˙ng d¯eˆ’ tìm taˆ

˙p tin có tên filename Taˆ

˙p tin này không nhaˆ´t thieˆ´t pha’i kha’ thi (không nhaˆ´t thieˆ´t pha’i có bit x) Neˆ´u trong thu’ mu

˙c, lieˆ

˙t kê trong PATH, không tìm thaˆ´y taˆ

˙p tin caˆ`n, thì se˜ tìm

nó (taˆ

˙p tin) trong thu’ mu

˙c hieˆ

˙n tho`’i Neˆ´u có các tham soˆ´ (d¯u’a ra arguments, xem d¯i

˙nh da˙ng This is trial version

www.adultpdf.com

Trang 4

50 Bash

câu leˆ

˙nh o’’ trên), thì trong tho`’i gian thu

˙’c hieˆ˙n script chúng se˜ thành các tham bieˆ´n vi

˙trí Neˆ´u không có tham soˆ´ , thì tham bieˆ´n vi

˙trí không thay d¯oˆ’i Giá tri

˙(tra˙ng thái), mà leˆ

˙nhsource tra’ la

˙i, trùng vo´’i giá tri

˙, tra’ la˙i bo’’i câu leˆ

˙nh cuoˆ´ i cùng trong script Neˆ´u không câu leˆ

˙nh nào d¯u’o

˙’c thu˙’c hieˆ˙n, hoa˘˙c không tìm thaˆ´y taˆ

˙p tinfilename, thì tra˙ng thái thoát ba˘`ng 0.

3.10 Câu leˆ

˙ nh sh

Ba

˙n luôn luôn có theˆ’ cha

˙y moˆ

˙t ba’n sao cu’a heˆ

˙vo’bashnho`’ câu leˆ

˙nhbashhaysh Khi này

có theˆ’ ba˘´t ba’n sao này cha

˙y moˆ

˙t script nào d¯ó, neˆ´u d¯u’a tên cu’a script nhu’ moˆ

˙t tham soˆ´ cho leˆ

˙nh bash Nhu’ vaˆ

˙y, d¯eˆ’ thu

˙’c hieˆ˙n script myscript caˆ`n d¯u’a câu leˆ

˙nh "sh myscript". Neˆ´u xem noˆ

˙i dung cu’a moˆ

˙t taˆ

˙p tin script nào d¯ó (nhu˜’ng taˆ

˙p tin nhu’ vaˆ

˙y có raˆ´t nhieˆ`u trên heˆ

˙ thoˆ´ ng), ba

˙n se˜ thaˆ´y dòng d¯aˆ`u tiên có da

˙ng sau:#!/bin/sh D¯ ieˆ`u này có nghı˜a là, khi chúng ta go

˙i script d¯eˆ’ thu

˙’c hieˆ˙n nhu’ moˆ

˙t leˆ

˙nh thông thu’o`’ng, thì/bin/shse˜ giúp chúng ta

"thu xeˆ´p" mo

˙i thu´’ Có theˆ’ thay theˆ´ dòng này bo’’i liên keˆ´t d¯eˆ´n baˆ´t ky` moˆ

˙t chu’o’ng trình nào,

mà se˜ d¯o

˙c taˆ

˙p tin và thu˙’c hieˆ˙n các câu leˆ

˙nh tu’o’ng u´’ng Ví du

˙, script trên ngôn ngu˜’ Perl ba˘´t d¯aˆ`u bo’’i dòng có da

˙ng!/bin/perl Moˆ

˙t chú ý khác là ký tu˙’#dùng d¯eˆ’ vieˆ´t lo`’i chú thích trong script Taˆ´t ca’ nhu˜’ng gì d¯u´’ng sau ký tu

˙’ này d¯eˆ´ n cuoˆ´i dòng se˜ d¯u’o

˙’c coi là chú thích và bi˙ bashbo’ qua (tu´’c là heˆ

˙ vo’ se˜ không xem dòng này là câu leˆ

˙nh) Neˆ´u ba

˙n muoˆ´ n kieˆ’m chu´’ng la

˙i tác du˙ng cu’a ký tu˙’ này, thì hãy nhaˆ˙p vào dòng leˆ

˙nh moˆ

˙t câu leˆ

˙nh baˆ´t ky`, và d¯a˘

˙t tru’o´’c nó (câu leˆ

˙nh) ký tu˙’#, ví du˙ "# ls", ba˙n se˜ thaˆ´y ra˘`ng heˆ

˙ vo’ bo’’ qua câu leˆ

˙nh này.

Chúng ta se˜ du`’ng bài ho

˙c nga˘´n go˙n veˆ`bashta

˙i d¯ây Taˆ´t nhiên, còn raˆ´t nhieˆ`u vaˆ´n d¯eˆ` quan tro

˙ng caˆ`n xem xét nhu’ng na˘`m ngoài pha

˙m vi cu’a bài ho˙c, ví du˙, qua’n lý tieˆ´n trình, li

˙ch su’’câu leˆ

˙nh, mô ta’ veˆ` thu’ vieˆ

˙n readline, tín hieˆ

˙u, v.v Các ba˙n se˜ tìm thaˆ´y thông tin caˆ`n thieˆ´t trong các cuoˆ´ n hu’o´’ng daˆ˜n khác hoa˘

˙c trên trangman bash.

This is trial version www.adultpdf.com

Trang 5

This is trial version www.adultpdf.com

Ngày đăng: 13/08/2014, 19:22

TỪ KHÓA LIÊN QUAN