Lập trình SHELL trên Linux
Giới thiệu Linux Shell
!"#$% &'()*)(+(, #/("0(1
2(34&5 6 !%78, !9%7#, !%7:; !<%7=
:;!,:( % >0?,2(3
+(@? "#,A)( BC(&'D BC
Giới thiệu Linux Shell
2(3,A+0E((D(1 ,> *,, F,!G( ,, %HI "
6J*KLM NOKL OKO
P,0
L ("9Q* ,( ("!'-* R,B-SS %
GTI+
U↵
Mục đích của shell
P*7(@? " 0V()(HIW* "(4X70H(/("5QYZ "B
0V
[><(.'()05(#/(\()(HI
2BC
4BV* "Z0+#(.C!0V]( (%
,(D "0(F^"57 _0V<EQ*4JR0(19(+`*
!(aS%7#_ >!a,Sb( %
Điều khiển shell
+0VHI&'D BC]( 'D 6*C0V#(.#'?
<c( ]( (
6(*0+#(.C0(19(+
G(.CZ_ "
6+&* "#,&B-#QY (B-&C
Điều khiển shell từ dòng lệnh
GTId#(+?B-&(R\(e(!%fP#C "0+dZg 0HI ",0+
(+?P+0(19(+ 0&
$ for file in *
>do
> if [ $(grep –l ‘main()’ $file)]
> then
> more $file
> fi
>done
Điều khiển shell từ script
V0(+^#("0(19(+ Z_ " 9 4 (95( "/00+H0E(#(& YD
[+@<F,C+0* "#,&B-#QY 0]&(B-0+(
GTI,g
#!/bin/bash
for file in *
do
if [ $(grep –l ‘main()’ $file) ];
then
more $file
fi
done
Môi trường Shell
h'() 4F*(. B(J,#("C0VT3*
,i
6*B-9c(,
6*<(.
P("*j,*5]
k*<T
Ngôn ngữ lập trình shell
[+,F,&C +HI<49lC,F,#m<F,!n#(77%
6*Y<F^'D
64J (
(. 9(+57\(75#<(.'()
[(19("9(+<(+R '(<o
64J0(19(+C(a77b( 7=
;
6* "&((!<( L(%
Cấu trúc shell script
h& (<Fi
p_0Y-Q),<(. 0VHI#](C'? (R!#TIqrS<(S<%
6*JT<X0Y#/(4m!q%
6*__ ( * "^2(3,>*4J0(19(+7=
P( (
6
[>s13U,t3M (N
6 (USM (N
6UM (N
Lệnh ghi ra màn hình
6J*,KLuOK<(+RO
p0+(+?(*?*<(.7<(+R,>\(C
P,0
P,v9'35_9((
L.<(+R \(0>,>*9A+HI*9w0><("x7x<7x7xy!9wz:66{
%7=
GTI
,|;,b,}~
,|6U•€•~
Lệnh vào ra
6J*M<(.NK<(.OK<(.O
p0+0]D ("Z<T
GTI (0]#(D ("
U#(#(
#!/bin/bash
#Vi du sử dụng lenh read va echo
echo “Nhap mot so: ”
read num
echo “So vua nhap la: $num”
Đặc điểm biến shell
(. D(*9(C ,AHI<(.9'Y9(<*,#0?‚9(+
h>0?74F*<(.010V9c(,#R?9(+\(!F9(*(*? &5C ƒ3 \(%
#&#( "-"T`0&+<(.\(50+("Aj9(QY
(. +0+ BC,>0+0(19(+'()(.„<("D,)
Sử dụng biến
6ƒ'D BC7 4A*# 4(*?^<(.
MQ<(.N…M(*?Nc0„(*?+ &57\(Z&<(.9*
MQ<(.N…†,†k*(*?,<(. 9.sF("^& "
UMQ<(.N0+ 4(*??^<(.
GTI
K=Oq3…‡
K=Oq,U3
‡
Biến môi trường
8(C 9c(0&4ˆ&5<(.0V9(<*,#*(*?>0?7J0V]( <(.'()
6*<(.'())0V#(.,0+„<("#/(*<(.,)(0?‚
h\('()0mBR*<(.'()(Q<(",I0T(Q
[+(+?*<(.'() "#[+,&<(.'()/( "3,
Một số biến môi trường
;‰P:h€PQ*2(3
;‰h€PI^^)(
;€22 ("
ŠpPI("
:P;p**I0+d9(.* "7„*<c(4(4!%
•€•PQ)(("
Pۥh8(+^( ("
p4X
Cách dùng các dấu bọc
P, (< ,(40><(",* "(C "*7w‚#*("
9*<("
6*4
p41!†%
p4*0!e%
p4*9A!|%
Dấu huyền (`)
p0+](("& ""5, (
GTI7, (*_
(…†b†!,>(…U!b%%
(,…†bL Ug †
P,0
p_`(" "b#*0)‹("#,<(.(
p_(" "b0.5_,B-Ug #*,<(. (,
p0+](("& ""5, (
GTI7, (*_
(…†b†!,>(…U!b%%
(,…†bL Ug †
P,0
p_`(" "b#*0)‹("#,<(.(
p_(" "b0.5_,B-Ug #*,<(. (,
Dấu nháy đơn (‘) và nháy kép (“)
p0+(+?C<c( Q,,>*(*?,<(.\(
p4*9A!|%9((`("#/((*?^<(.4U
p4*0!e%9((`(Q_#m<F,„ "
GTI
…|Œ,P•
,•U|q{Œ,P
,fUfq{U
Các ký tự đặc biệt của Bash
Biến tự động
6_]( <(.Ž0]75#?T
6*<(.0V\Vˆ
PQ<(.0V,/
6y<(.0&UyU•
Uy6RQ^ "
6*<(.<X0YZU
.<(.#?T /•CHIJ*U•‘0+0V*(*?^J
GTIU•y‘
Tham biến vị trí đặc biệt
<<(.#?T0><("
Uq5 V<(.#?T!9'jUy%
U’PF#14F*<(.#?T0V0/(3„!,(Uy%
U“p*4F*<(.7,(ZUy
Biểu thức toán học
6*,*Ht7L7“7S7”
HI 7U!!%%73,>UKO0+("j(*?<(+R,*]
GTI
•…•t|
,…†3U,t†
…U!!U “Ub(%%
…UKUSyyO
(…UKU”UO
3…U!,|s!‡%~u<L %
…U!,| …–U3S~u<L %
Biểu thức điều kiện
2<(+R9(+ '(7F#19.sF 0J!%(!y%)0V,*4J
0(19(+C!(a7b( 7=%
P, (HI "KO,>0+9(+<(+R '(
6J*
M<(+RN
KM<(+RNO
Cấu trúc rẽ nhánh if-else
6J*
M0(19("N
M "N
M0(19("N–
M "N
=
M "N
GTI
,v|,,•
{aKUv •O
,|U,,•~
,|U ,,•~
g