!"#
$%&'()*+,
*!)-./012345/6
Chủ đề:
LẬP TRÌNH SHELL
+!)7!89
+!)7!89
!:%'
!:%'
;<=>)?!
;<=>)?!
GIỚI THIỆU NHÓM
4@ABC2-DEBB'FE
4@ABC2-DEBB'FE
G
G
/@A8!@)
/@A8!@)
HI!JAK@DEBB
HI!JAK@DEBB
L!IM@&*&NBO2
L!IM@&*&NBO2
NỘI DUNG THUYẾT TRÌNH
1. Cách lặp trình shell trong fedora
Ta có thể lập trình trực tiếp trên
terminal trong fedora
Và các lệnh sẽ được ngăn cách với
nhau bằng dấu phẩy ( , )
Tuy nhiên cách làm này dễ gây khó
khăn cho việc lập trình 1 đoạn code dài
hay phức tạp.
Ta có thể lập trình trực tiếp trên
terminal trong fedora
Và các lệnh sẽ được ngăn cách với
nhau bằng dấu phẩy ( , )
Tuy nhiên cách làm này dễ gây khó
khăn cho việc lập trình 1 đoạn code dài
hay phức tạp.
Vì vậy, ta có thể lập trình trên các
trình soạn thảo khác như: vi,
emacs,…. Ở đây, ta sẽ được
hướng dẫn phương pháp lập trình
shell trên vi.
1A4
1A4
•
Khởi động vi với terminal bằng câu lệnh $ vi <tên chương trình> ( thường sẽ đặt tên chương trình phù hợp với nội
dung sẽ lập trình cho dễ nhớ )
•
Sau khi cửa sổ vi hiện lên thì bấm phím a để thực hiện việc soạn thảo.
•
Khởi động vi với terminal bằng câu lệnh $ vi <tên chương trình> ( thường sẽ đặt tên chương trình phù hợp với nội
dung sẽ lập trình cho dễ nhớ )
•
Sau khi cửa sổ vi hiện lên thì bấm phím a để thực hiện việc soạn thảo.
1AG
1AG
•
Thực hiện việc lập trình trong vi.
•
Thực hiện việc lập trình trong vi.
1A/
1A/
•
Sau khi kết thúc việc lập trình bấm phím ESC sau đó gõ ZZ ( Shift + zz )
•
để thoát vi hoặc double click vào thanh trạng thái gõ lệnh :quit sau đó ENTER.
•
Sau khi kết thúc việc lập trình bấm phím ESC sau đó gõ ZZ ( Shift + zz )
•
để thoát vi hoặc double click vào thanh trạng thái gõ lệnh :quit sau đó ENTER.
1AH
1AH
•
Dùng terminal gọi chương trình vừa được lập trình bằng cú pháp $bash <tên chương trình>.
•
Dùng terminal gọi chương trình vừa được lập trình bằng cú pháp $bash <tên chương trình>.
Các bước lập trình shell trên vi
B1: Khởi động vi với terminal bằng câu lệnh $ vi <tên chương trình> ( thường sẽ đặt tên chương trình phù hợp với nội dung sẽ lập
trình cho dễ nhớ )
Sau khi cửa sổ vi hiện lên thì bấm phím a để thực hiện việc soạn thảo.
![]()
![]()
B2: Thực hiện việc lập trình trong vi.
B3: Sau khi kết thúc việc lập trình bấm phím ESC sau đó gõ ZZ ( Shift + zz )
để thoát vi hoặc double click vào thanh trạng thái gõ lệnh :quit sau đó ENTER.
B4: Dùng terminal gọi chương trình vừa được lập trình bằng cú pháp
$bash <tên chương trình>.
B3: Sau khi kết thúc việc lập trình bấm phím ESC sau đó gõ ZZ ( Shift + zz )
để thoát vi hoặc double click vào thanh trạng thái gõ lệnh :quit sau đó ENTER.
B4: Dùng terminal gọi chương trình vừa được lập trình bằng cú pháp
$bash <tên chương trình>.
2.Biến
Tên biến bắt đầu với ký tự alphabetic hay dấu
underscore “_”
và được theo sau bởi 0 hay nhiều ký tự alphanumeric
hay dấu _.
Tên biến bắt đầu với ký tự alphabetic hay dấu
underscore “_”
và được theo sau bởi 0 hay nhiều ký tự alphanumeric
hay dấu _.
Để gán giá trị biến, cú pháp là:
< tên biến >=< giá trị >
Để gán giá trị biến, cú pháp là:
< tên biến >=< giá trị >
Chú ý:
Không có khoảng trống trước và sau dấu =
Để hiển thị giá trị biến thường dùng dấu $ trước tên
biến
Không có khoảng trống trước và sau dấu =
Để hiển thị giá trị biến thường dùng dấu $ trước tên
biến
Ví dụ: $ count=1
$ dh=DaiHoc
Ví dụ: $ count=1
$ dh=DaiHoc
•
?8!DBD
PA(Q
•
?8!@)R2(S
•
?8!@)TU(
V
•
?8!@)PA(`
A
W!
E
A
W!
E
XBEW!E
XBEW!E
ADBD
ADBD
?!Y
BE
W!
E
?!Y
BE
W!
E
3. Các dấu nháy
Có 4 kí tự dấu đặc biệt:
Có 4 kí tự dấu đặc biệt:
3.1 Dấu nháy ngược `…`
Thường được sử dụng để bọc một cấu trúc lệnh.
Mục đích của dấu nháy ngược là yêu cầu shell thi hành lệnh trong cặp dấu nháy ngược và chèn
sddout của lệnh này vào vị trí cặp dấu nháy ngược (tương tự cách sử dụng cặp ngoặc tạo độ ưu
tiên cao hơn khi tính toán)
Thường được sử dụng để bọc một cấu trúc lệnh.
Mục đích của dấu nháy ngược là yêu cầu shell thi hành lệnh trong cặp dấu nháy ngược và chèn
sddout của lệnh này vào vị trí cặp dấu nháy ngược (tương tự cách sử dụng cặp ngoặc tạo độ ưu
tiên cao hơn khi tính toán)
;Z[(
\EAE?EED(]E]
E?EED(^EGG4L(GL(36_G333
\EAEA!EEA)D(]2`]
EA!EEA)D(a2aEDaEDDEBB
;Z[(
\EAE?EED(]E]
E?EED(^EGG4L(GL(36_G333
\EAEA!EEA)D(]2`]
EA!EEA)D(a2aEDaEDDEBB
3.2 Dấu nháy đơn ‘…’
A.C22EYD!(
\A2EY
+!)E;9bbGG4c4
+!)Ebbcc444
+!)E!cbG//4/4
;66d44GG
;;?!c6b6b6b
;9cccbbcc
>BE2eNA.'!-(
\E2!2EY
+!)E!cbG//4/4
OA
\E292EY
+!)E&9bbGG4c4
;9cccbbcc
+!!AfA!g;9-Y@Bg
\E2;92EY
E2(9(D!AhBEEE)
2EY(;&?!c6b6b6b
2EY(;9cccbbcc
!"#$
$%&'(!")*"+,-./0(
1&2$(3
>BE2eNA.'!-(
\E2!2EY
+!)E!cbG//4/4
OA
\E292EY
+!)E&9bbGG4c4
;9cccbbcc
+!!AfA!g;9-Y@Bg
\E2;92EY
E2(9(D!AhBEEE)
2EY(;&?!c6b6b6b
2EY(;9cccbbcc
!"#$
$%&'(!")*"+,-./0(
1&2$(3
0iA*)AO28!@)TUVjkATIY@ADEBBYA!gV;9VB*TD
\E2k;9k2EY
;9cccbbcc
XEBBl!)'A!gmnY'AO28!@)TU&*oEApB*TDZ?[(
$ echo 1 2 3 4
1 2 3 4
qA.HTD'DEBBTD!A@ATDA@AT!Y#4%rs
$ echo ’1 2 3 4’
1 2 3 4
!)'Aim
\EAktEDBBhBEDDEA)k
tEDBBhBEDDEA)
\uktEDBBhBEDDEA)k
\EA\
)hBEE`hBEEDvBEwEDBBhBEDDEA)
;-DEBB@@=Yo-@2@='C2A8!t
?8!DBD
PA
?8!DBD
PA
?8!
@)
P
A
?8!
@)
P
A
3.3 Dấu nháy kép “…”
Dấu nháy kép hoạt động tương tự nháy đơn nhưng có vài sự khác biệt. Trong dấu nháy kép có 3 ký
tự sau đây không được bỏ qua chức năng của chúng
Thí dụ:
\EAt
)hBEE`hBEEDvBEw
\xut
\EAV\xk
\x
\EAy\xy
t
\EAy\y
tEDBBhBEDD
\9??z{XXuyLc+!)EE!|
}~!/|2y
\EA\9??z{XX
Lc+!)EE!|~!/|2
qDEBBY'=AY•W!mno!N1€E`BE•9??z{XX&-.oET.B*8!2,A@ATDs
\EAS\9??z{XXy
Lc+!)EE!|
~!/|2
qT&*AO28!@)R2SjyDEBBY'=Al!)'mno!N1€E`BE•9??z{XXs
3.4 Dấu slash ngược \
•
Về mặt cơ bản dấu \ có vẽ giống như ý nghĩa cặp dấu nháy đơn ‘ ’ cho ký tự liền sau dấu \, nhưng có vài
điểm khác biệt như sau
•
Ví Dụ:
\EA}
YD(D)oEE!Eo2EAEEk}V
qDEBBI!mn}@ApDnT=1lB!'8)!TDAp'C2s
\EAV}V \EAQ}
} }
qAO28!@)TUs
\xut
\EAQ\x
\x
qAO28!@)TUs
\EAS\xS
t
\EASQ\xSqAim8!QSjSs
\x
4. Biểu thức tính toán trong shell
•
R2A(‚ R2ƒ(5
R2,(t R2A(a
•
0Eo2K@@=YI!JA&*TD!@=KTPA
;Z[(
0DD@(-eq(XD@Y„(uu
-ne(Y„(…u
-lt(+•U(†
-le(+•U)Y„(†u
-gt(01U(}
-ge(01UOAY„(}u
0DD@(-eq(XD@Y„(uu
-ne(Y„(…u
-lt(+•U(†
-le(+•U)Y„(†u
-gt(01U(}
-ge(01UOAY„(}u
5. Điều khiển rẽ nhánh và vòng lặp
5.1 Cấu trúc lệnh if
if [ điều kiện ] hay lệnh
then
……
@
hay
if [ điều kiện] hay lệnh
then
……
else
……
@
Từ khóa fi dùng để kết thúc mệnh đề điều kiện
if.
Chú ý là chỉ có một từ fi dù có rẽ nhánh else hay
không có cũng vậy.
Từ khóa fi dùng để kết thúc mệnh đề điều kiện
if.
Chú ý là chỉ có một từ fi dù có rẽ nhánh else hay
không có cũng vậy.
5.2 Cấu trúc elif
•
Khi có nhiều điều kiện lồng vào nhau như hình bên trái thì shell cho phép dùng
elif thay “else if”, và chỉ cần dùng một chữ fi để kết thúc tất cả các điều kiện như
hình bên phải; tuy nhiên cách này sẽ tạo khó khăn khi ta cần debug chương trình.
5.3 Vòng lặp for:
Lệnh for được dùng để thi hành một tập hợp các lệnh qua một số lần nhất định. Dạng lệnh for được mô tả như
sau:
Tập hợp các lệnh command1 commandk nằm giữa cặp từ khoá do done được gọi là thân của vòng lặp. Số
lần thực hiện tập hợp lệnh này được đếm trong số từ liệt kê phiá sau từ khóa in.
for var in word1 word2 wordn
do
command 1
command k
E
Trong phần mô tả trên, lần thi hành thứ nhất giá trị word1 được gán cho biến var, lần thứ hai giá
trị word2 được gán cho biến var và lần thứ n giá trị wordn được gán cho biến var
Z[(
<'*-qAim8!}nT2@Ds
\F4G/
}
}EA\
}E
4
G
/
\