oӦ쪺DӦ^ݬݡAO shell script OH shell ڭ̦b
{ bash
wgLFAO@ӤrUڭ̻Ptηq@Ӥu㤶A script OԣH
rWNqA script Oy}B@zNCyܬOA shell script Ow shell Ҽgy@Iz
FڡHIA
shell script OQ shell \Ҽg@ӡy{
(program)zAoӵ{Oϥί¤rɡAN@ shell ykPOgb̭A
ftWܪkBuROPƬyɦV\AHFڭ̩ҷQnBzتC
ҥHA²檺A shell script NO DOS ~N妸 (.bat) A²檺\NON\hOJgb@_A
ϥΪ̫ܻN one touch (@ɮ "shell script" AN@hӫO)A
ӡA shell script Ѱ}CBjBPP_n\AϥΪ̤]iHH shell
Ӽg{AӤϥ C {yDzε{gykOI
AoziHAѤFܡHOI shell script iH²檺QݦO妸ɡA
]iHQO@ӵ{yABoӵ{yѩOQ shell PuOA
ҥHݭnsĶYiAB֦ (debug) uAҥHALiHUtκzֳtznDC
FDz shell scripts?
oOӦnDAڤSF@wn shell script HڤSOTHASg{A
ڷF٭n shell script OHnǥiiHڡHpG Linux zӨA
zuOQny|ΡzӤwAAݭn shell script ]ٵLҿסAoLLhA
즳ŪɭԡAAӦnn@@@COApGzOuQnM Linux shߡA
shell script NiAOH]G
۰ʤƺzn̾G
γz]DAz@DuO²檺ƱACѭni檺ȴNG
dߵnɡBlܬyqBʱϥΪ̨ϥΥDABDUw]ƪAB
DnsdߡBnoILϥΪ̪MnDFCӳoǤu@A
zQnۦʳBzA٬Og²檺{zC۰ʳBzRAYD~qzOH
MOtΦ۰ʤu@nAaIoNon}n shell script աI
lܻPztΪnu@G
Mڭ٨SAȱҰʪkALAo̥iH@UAڭ Linux tΪA
( services ) ҰʪAb /etc/init.d/ oӥؿUAҦɮ׳O scripts F
t~A]A} (booting) L{]OQ shell script jMtΪ]wơA
MANJUӪAȪ]wѼưڡI|ҨӻApGڭ̷QnsҰʨtεnɡA
iHϥΡGy/etc/init.d/syslogd restartzA syslogd ɮ״NO script աI
t~AڴgbY@N FC Wo{AҰ MySQL oӸƮwAȮɡATOiHҰʪA
OùWoѬOX{yfailurezAӤ~o{AӬOҰ MySQL script
|DʪHyŪKXzhյnJ MySQL AڭקL MySQL KXoMNnJѡ
ӧF script ANhoӰDաIpӡA script TOݭnDzߪڡI
²JI\G
ڭ̪tΦɡAjh|NoDzObtΰOA]NOڭ̱`쪺ytεnɡzA
ڭ̥iHbTwXDʪhRtεnɡAYıDANߨqzA
Ϊ̬Oߨ[j𪺳]wWhAp@ӡAzDiNFyۧګO@zoDzߥ\ա
|ҨӻAڭ̥iHqL shell script hRyӫʥ]մX٬OsuѤANHצ
IPz|ʡAҦpgL@寸n骺 shell script A
NOγoӷQkhFOI
sO@G
AsӨA script ²檺\NOGyJ@Ǧb
command line UFsOANLgJ scripts AӥѪ scripts
ӱҰʤ@sꪺ command line OXJIzҦpG sWh
( iptables )A}J{Ǫ ( NOb /etc/rc.d/rc.local Y
) AOۦ\աI AFApGҼ{ program A
scripts ]iHQAȬOڭ̧@jꪺOJb@ɮ̭A
Ӫɮ״NiH桦@SSOqINOo²աI
²ƳBzG
ѫe@
Wܪk awk {A
ziHo{A awk iHΨӳBz²檺ƾڸƩOIҦp~檺BzڵC
shell script \jjAҦpg shell script BzƾڸƪڡA
rƪBzڵAgKAtפS(]b Linux į)A
uOܤΪաI
x䴩PDz߾{uG
XGҦ Unix Like WiH] shell script As MS Windows tC]iHΡA
~A shell script ykO۷˩MAݳݪorAӤOXA
ܮeDzߡodzOziH[HҶqDzIڡI
WodzOzҼ{Dz shell script SI㦹~A shell script ٥iH²檺H vi
ӪsgAbOܤKnFIҥHA٬OijzDzߤ@UաC
LAM shell script ٬O{ (program) AڤWA shell script
BzƪtפWOӰC] shell script ΪO~OP bash shell
@ǹw]uAҥHAL``|hIs~祃wA]ABtפWMWDzΪ{yC
ҥHoA shell script ΦbtκzWOܦn@uAOΦbBzjqƭȹBWA
NnFӥB٫ܳ·СA]G
Shell scripts tCA
BϥΪ CPU 귽hAyD귽t}C٦nA
ڭ̽Tܤ֬ݨQ shell script bijqƾڹB⪺AҥHAߪաI
Ĥ@ script gP
pPe쪺A shell script NO¤r (ASCII) Aڭ̥iHsoɮסA
Moɮרڭ̤@hӫOAΪ̬OQΤ@ǹBPP_ڭ̹FYǥ\C
ҥHաAnsoɮתeɡAMNݭnƦ bash shell OUF{ѡC
ڭ̻LAnUFOݭn`Nƶb
bash `wgLA
b shell script gP˻ݭnΨoǪ`NƶG
- pPe bash command 쪺AOPѼƶhӪťշ|QF
- Ӫťզ]NQIAåB [tab] ]O|Qz|I
- pGŪ@ Enter Ÿ ( CR )^ANն}lӦROF
- ܩpG@檺eӦhAhiHϥ \[Enter] өܤU@F
- ~Aϥγ̦h # iѡI[b # ᭱rANQѤrӳQI
p@ӡAڭ̦b script Ҽg{AN|Q@@檺CnFAoӵ{]ɦWO
shell.sh nFApoɮסH²AiHUXӤkG
- N shell.sh [WiŪP (rx) vAMNH ./shell.sh ӰFF
- H sh shell.sh 觋ӪYiC
ϥINOn shell.sh OiHQ檺NաIxIڬݭnϥ ./shell.sh ӤUFOH
ٰOoڭ̦b bash ̭@jժAOO_QP PATH oܼƦA
ҥHAnyثeoӥؿUYɮסzNݭn[W ./ oӥؿաIt~Az]iHN
shell.sh bzaؿU ~/bin oӥؿAMQ PATH="$PATH":~/bin ]wA
KKANz script o ^_^
A sh shell.sh ]iHOHoO] /bin/sh NO /bin/bash A
ϥ sh shell.sh YiDtΡAڷQnH bash \Ӱ shell.sh oɮפONC
ӧڭ̤]iHQ sh ѼơAp -n -x ˬdPl shell.sh ykO_TOI ^_^
gĤ@ script
OӪAnǪZ\nqa_Anǵ{OHA֩wOѡyqX Hello WorldIz
oӦr}lIOKINg@ script ja@@@G
[root@linux ~]# mkdir scripts; cd scripts
[root@linux scripts]# vi sh01.sh
#!/bin/bash
# Program:
# This program is used to show "Hello World !" in screen.
# History:
# 2005/08/23 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "Hello World ! \a \n"
exit 0
|
bڭ̳oӳ`AбNҦg script mzaؿ ~/scripts oӥؿA
nzաIWgkAڥDnNӵ{gƬqAjPOoˡG
- Ĥ@ #!/bin/bash bŧio script ϥΪ shell W١G
]ڭ̨ϥΪO bash AҥHAnHy #!/bin/bash zӫŧioɮפykϥ
bash ykIoӵ{QɡALNJ bash ҳ]wɡA
åB bash Өϧڭ̩UOIoܭnI(bܦhpApGS]wno@A
ӵ{ܥi|LkA]tΥiLkP_ӵ{ݭnϥΤ shell ӰڡI)
- {eŧiG
script AFĤ@檺 #! OΨӫŧi shell ~AL # Oyѡzγ~I
ҥHW{AĤGHUNOΨӻӵ{AC@ӻA
ijz@wni script G1. eP\F 2. TF 3. @̻Pp觋F
4. ɤF5. v CoNUӵ{gP debug OI
- DnܼƪŧiG
ijȥnN@ǭnܼƳ]wnAӤH{A PATH O̭nI
p@ӡAhiڭ̳o{biɡAiHUFOA
Ӥg|OInաI
- Dn{
NNDn{gnYiIboӨҤlANO echo @աI
- 榨Gi
O_Ooڭ̦b bash ̭nQפ@ӫO榨\P_AiHϥ $? oܼƨ[
ڭ̤]iHQ exit oӫO{_AåB^Ǥ@ӼƭȵtΡC
bڭ̳oӨҤlAڨϥ exit 0 AoN} script AåB^Ǥ@ 0 tΡA
ҥHڰ槹o script AYۤUF echo $? hio 0 ȳI
oŪӤ]DFAIQγo exit n \Aڭ٥iHۭq~TA
o{ܱo[ smart OI
UӰݬݵGO˧aH
[root@linux scripts]# sh sh01.sh
Hello World !
|
z|ݨùOoˡAӥBٷ|ťyNz@nAOHٰOoe@쪺
printf aH echo ۨǯS]iHoͦP˪Ʊ
LA echo n[W -e ѼƤ~I
IbzgoӤp script AzNiHjnGyڤ]|g{FzII
²榳a ^_^
t~AA]iHQΡGychmod a+x sh01.sh; ./sh01.shzӰo script OI
g shell script }nߺDإ
@Ө}nߺDiOܭnjab}lg{ɭԡA̮eoA
{{gXӴNnFALnCApG{MA
zۤvOܤjUC
|ҨӻAۤvFۤvݨDAggF֪ script ڶiD IP ڡB
nɤRPzڡB۰ʤWǤUn]wɰڵALANO]iFA
zDSӦhFA``P@ӵ{bPDWiA̫A쩳@~O̷sO_ӡA
ӥBAIOAڨ쩳OF̡HH˪קHѪ@GbunR
ҥHAӳbg{ɭԡAq`|JӪN{]pL{LOUӡA
ӥBٷ|O@ǾvAp@ӡAnhF
ܤ֫ܮeDڭקFǸơAHε{ק諸zP跧A
b@WOPܦhܦhI
t~Ab@Ҫ]wWACӤHҳۦPAFoΪҡA
ڳ|ۦwqn@Ǥ@w|QΨ쪺ܼơAҦp PATH oӪNI
oˤnաҥHAijz@wni}n script gߺDA
bC script YBOnG
- script \F
- script TF
- script @̻Pp觋F
- script vŧi觋F
- script History (v)F
- script SOAϥε|觋ӤUFF
- script B@ɻݭnܼƹwŧiP]wC
bĤ@ shell script gA۫HzӨ㦳g\OFC
UӡAb}l`J{eAڭ̥Ӫ@Ǥ쪺²檺pdҦnFC
UdҤAFG觋۷hAijzۦ漶gݬݡAgAPgeA
oˤ~[`InIoAڭ̴N@Ӥ@ӨӪaI
ܼƤeѨϥΪ̨Mw
ܦhɭԧڭ̻ݭnϥΪ̿J@ǤeAn{iHQB@C
²檺ӻAjaӳw˹Ln骺gAw˪ɭԡALO|ݱzynw˨쨺ӥؿhHzܡH
ϥΪ̿Jƪʧ@ANOϥΪ̿JܼƤeաC
AٰOob
bash ɭԡAڭ̦Ǩ@
read OaHѰOܡAЦۦ^Yh\Ū@fC
{bAЧAH read Oγ~Ag@ script ALiHϥΪ̿JG1 first name P 2. last nameA
̫åBbùWܡGyYour full name is: zeG
[root@linux scripts]# vi sh02.sh
#!/bin/bash
# Program:
# Let user keyin their first and last name, and show their full name.
# History:
# 2005/08/23 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input your first name: " firstname
read -p "Please input your last name: " lastname
echo -e "\nYour full name is: $firstname $lastname"
|
NWo sh02.sh @UAANo{ϥΪ̦ۤvJܼƥiHQΪI
ܤaI[oI
Q date iɮתإ
Q@ӪpApGڨCѭniƥAӳƥƤSQQл\A]NOA
ڷQnNCѳƥƩbPɮפCzIouxZڡHDnڨCѥhק script H
ݭnڡI]CѪyzäۦPAҥHڥiHNɦWG backup.20050802 A
NiHCѤ@ӤPɦWFܡHITpCnFAUӥXӨҤlG
ڷQnإߤTӪŪɮסAɦW̶}YѨϥΪ̿JMwA]ϥΪ̿J filename nFA
ѪO 2005/08/23 AڷQnHeѡBQѡBѪӫإ߳oɮסAY
filename_20050821, filename_20050822, filename_20050823 AӦpOnH
[root@linux scripts]# vi sh03.sh
#!/bin/bash
# Program:
# User can keyin filename to touch 3 new files.
# History:
# 2005/08/23 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1. ϥΪ̿JɮצW١Aèo fileuser oܼơF
echo -e "I will use 'touch' command to create 3 files."
read -p "Please input the filename what you want: " fileuser
# 2. FקKϥΪHN Enter AQܼƥ\RɦWO_]wH
filename=${fileuser:-"filename"}
# 3. }lQ date OӨoһݭnɦWFF
date1=`date --date='2 days ago' +%Y%m%d`
date2=`date --date='1 days ago' +%Y%m%d`
date3=`date +%Y%m%d`
file1="$filename""$date1"
file2="$filename""$date2"
file3="$filename""$date3"
# 4. NɦWإߧaI
touch $file1
touch $file2
touch $file3
|
ڳzL@²檺ʧ@Aoǰʧ@iHb bash @̭A
]ApO (`) oTBܼƪ]w\Bܼƪ֥[HΧQ touch OUI
pGz}lo sh03.sh AAiHi⦸JA@ [Enter] Ӭd\ɦWOԣH
@iHJ@ǦrAo˨ӧP_Aɮ׳I date OΡA man date aI ^_^
ƭȹB⪺k
UݩxٰOoAڭ̥iHϥ declare өwqܼƪaHI
oˤ~i[BڡIiOA bash shell Yw]Ȥ䴩ƪơC
OKIڭ̨ӪݡApGڭ̭nϥΪ̿JܼơAMNܼƪeۭA
̫XۭGAiHH
[root@linux scripts]# vi sh04.sh
#!/bin/bash
# Program:
# User can input 2 integer to cross by!
# History:
# 2005/08/23 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "You SHOULD input 2 number, I will cross them! \n"
read -p "first number: " firstnu
read -p "second number: " secnu
total=$(($firstnu*$secnu))
echo -e "\nThe number $firstnu x $secnu is ==> $total"
|
bƦrBWAڭ̥iHϥΡy
declare -i total=$firstnu*$secnu z
]iHϥΤW觋ӶiIWAijϥγo˪觋ӶiBG
eOСAӥB]Kh㥼ӱziHϥγoؤ觋ӭp⪺rIܩƭȹBWBzA
hG
+, -, *, /, %C
% Olưա|ҨӻA 13 3 lơAGO 13=4*3+1AҥHlƬO 1 ڡINOG
[root@linux scripts]# nu=$((13%3)); echo $nu
1
|
oAѤFaHIhhDzPγI ^_^
b
bash `Aڭ̴L $? oܼƩҥNNqA
~A]zL && || ӧ@e@ӫOO_\i檺@ӰѦҡC
ApGڷQnD /dmtsai oӥؿO_sbɡAD@wnϥ ls ӰA
MAH $? ӧP_榨GܡHIMݭnI
ڭ̥iHzLy test zoӫOӰOI
Q test Oե\
ڭn˴tΤWYɮשΪ̬OݩʮɡAQ test oӫOӤu@A
uOnαooFA|ҨӻAڭnˬd /dmtsai O_sbɡAϥΡG
[root@linux ~]# test -e /dmtsai
|
浲Gä|ܥTA̫ڭ̥iHzL $? && || Ӯi{ӵGOI
Ҧpڭ̦bNWҤlgoˡG
[root@linux ~]# test -e /dmtsai && echo "exist" || echo "Not exist"
|
̲תGiHiڭ̬Oyexistz٬OyNot existzOIڪD -e Oդ@ӡyFzbbA
pGٷQnդ@UɦWOԣNɡA٦ǼлxiHӧP_OHIUoǪFI
ժлx | NNq |
1. YɦWyz(sbP_)Ap test -e filename |
-e | ӡyɦWzO_sbH(`) |
-f | ӡyɦWzO_ɮ(file)H(`) |
-d | ӡyɦWzO_ؿ(directory)H(`) |
-b | ӡyɦWzO_@ block device ˸mH |
-c | ӡyɦWzO_@ character device ˸mH |
-S | ӡyɦWzO_@ Socket ɮסH |
-p | ӡyɦWzO_@ FIFO (pipe) ɮסH |
-L | ӡyɦWzO_@ӳsɡH |
2. ɮתvAp test -r filename |
-r | ɦWO_㦳yiŪzݩʡH |
-w | ɦWO_㦳yigzݩʡH |
-x | ɦWO_㦳yizݩʡH |
-u | ɦWO_㦳ySUIDzݩʡH |
-g | ɦWO_㦳ySGIDzݩʡH |
-k | ɦWO_㦳ySticky bitzݩʡH |
-s | ɦWO_yDťɮסzH |
3. ɮפApG test file1 -nt file2 |
-nt | (newer than)P_ file1 O_ file2 s |
-ot | (older than)P_ file1 O_ file2 |
-ef | P_ file2 P file2 O_P@ɮסAiΦbP_ hard link PwWC
DnNqbPwAɮO_VP@ inode I |
4. ӾƤPwAҦp test n1 -eq n2 |
-eq | ƭȬ۵ (equal) |
-ne | ƭȤ (not equal) |
-gt | n1 j n2 (greater than) |
-lt | n1 p n2 (less than) |
-ge | n1 j n2 (greater than or equal) |
-le | n1 p n2 (less than or equal) |
5. Pwrꪺ |
test -z string | PwrO_ 0 HY string ŦrAh true |
test -n string | PwrO_D 0 HY string ŦrAh falseC G -n iٲ |
test str1 = str2 | Pw str1 O_ str2 AY۵Ah^ true |
test str1 != str2 | Pw str1 O_ str2 AY۵Ah^ false |
6. hPwAҦpG test -r filename -a -x filename |
-a | (and)⪬pPɦߡIҦp test -r file -a -x fileAh file Pɨ㦳 r P
x vɡA~^ trueC |
-o | (or)⪬p@ӦߡIҦp test -r file -o -x fileAh file 㦳 r
x vɡANi^ trueC |
! | Ϭ۪AAp test ! -x file A file 㦳 x ɡA^ true |
OKI{bڭ̴NQ test ڭ̼gX²檺ҤlCAP_@UA
ϥΪ̿J@ɦWAڭ̧P_G
- oɮO_sbAYsbh@ӡyFilename does not existzTAä_{F
- YoɮצsbAhP_LOɮשΥؿAGXyFilename is regular filez
yFilename is directoryz
- P_@UA̪oɮשΥؿҾ֦vAÿXvơI
AiHۦЧ@ݬݡAMAUGQװQסC`NQ test P && ٦ || лxI
[root@linux scripts]# vi sh05.sh
#!/bin/bash
# Program:
# Let user input a filename, the program will search the filename
# 1.) exist? 2.) file/directory? 3.) file permissions
# History:
# 2005/08/25 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1. ϥΪ̿JɦWAåBP_ϥΪ̬O_uJrH
echo -e "The program will show you that filename is exist which input by you.\n\n"
read -p "Input a filename : " filename
test -z $filename && echo "You MUST input a filename." && exit 0
# 2. P_ɮO_sbH
test ! -e $filename && echo "The filename $filename DO NOT exist" && exit 0
# 3. }lP_ɮPݩ
test -f $filename && filetype="regulare file"
test -d $filename && filetype="directory"
test -r $filename && perm="readable"
test -w $filename && perm="$perm writable"
test -x $filename && perm="$perm executable"
# 4. }lXTI
echo "The filename: $filename is a $filetype"
echo "And the permission are : $perm"
|
ܦ쪺ҤlaIziHۦAHLרҨӼg@UiΪ\OI
QΧP_Ÿ [ ]
Fڭ̫ܳwϥΪ test ~AAڭ٥iHQΧP_Ÿy [ ] zӶiƪP_OI
|ҨӻApGڷQnD $HOME oܼƬO_ŪAiHo˰G
[root@linux ~]# [ -z "$HOME" ]
|
ϥ [] nSO`NOAbWzCӤݭnťӤjA]ڪťϥΡyzӪܡA
AboǦaAݭnťG
[ "$HOME" == "$MAIL" ]
["$HOME"=="$MAIL"]
|
WҤlbAӦr $HOME P $MAIL O_ۦPNA۷ test $HOME = $MAIL NաI
ӦpGSťդjAҦp [$HOME==$MAIL] ɡAڭ̪ bash N|ܿ~TFIoinܪ`NڡI
ҥHAz̦nn`NG
- bA [] CӤݭnťӤjF
- bAܼơA̦nHӳ]wF
- bA`ơA̦nHӳ]wC
|ҨӻApڳ]wF name="VBird Tsai" AMo˧PwG
[root@linux ~]# name="VBird Tsai"
[root@linux ~]# [ $name == "VBird" ]
bash: [: too many arguments
|
OH] $name pGSϥ_ӡAWPw|ܦG
[ VBird Tsai == "VBird" ]
ӤOڭ̭nG
[ "VBird Tsai" == "VBird" ]
oiOtܦhIt~AAϥΤkPлxP test XG@Ҥ@˰ڡ
uOA`ΦbP_ if ..... then ..... fi pNOFC
nAڭ̤]~Ӱ@ӤpרҦnFG
- @ӵ{ɭԡAoӵ{|ϥΪ̿ Y N A
- pGϥΪ̿J Y y ɡANܡy OK, continue z
- pGϥΪ̿J n N ɡANܡy Oh, interrupt Iz
- pGO Y/y/N/n LrANܡyI don't know what is your choicez
QΤAB && P || ~aI
[root@linux scripts]# vi sh06.sh
#!/bin/bash
# Program:
# This program will show the user's choice
# History:
# 2005/08/25 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input (Y/N): " yn
[ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK, continue" && exit 0
[ "$yn" == "N" -o "$yn" == "n" ] && echo "Oh, interrupt!" && exit 0
echo "I don't know what is your choice" && exit 0
|
ܦaIQγoӦrPOkAڭ̴NiHܻPNϥΪ̷Qni檺u@OOI
UӡAڭ̦Aӽͤ@ǨLSFaI
P_̭UFn == ӤO@ = NnFOHڭ̦be@Wܪk̭ awk A
u@ = Ψӵ@ܼƳ]w䤺eAP_ɡAh|ӵA
YyzӫDy]wzNo̭nnn@UI ^_^
Shell script w]ܼ($0, $1...)
Aڭ̰@ shell script ɡAbo shell script ̭NwNڭ̰n@ǥiΪܼƤFC
|ҨӻAb[NӡAzN|o{Aڭ̭nҰʤ@ӨtΪAȮɡAi|UFo˪OG
[root@linux ~]# /etc/init.d/crond restart
|
OԣNHINOyV /etc/init.d/crond o script UF restart OzA
xIڭ̤Oϥ read ŪϥΪ̿JܼƤeܡHԣڥiHb script ᭱WoӰѼơH
oO] shell script ڭ̳]wn@ǫwܼƤFIܼƪOo˪G
/path/to/scriptname opt1 opt2 opt3 opt4 ...
$0 $1 $2 $3 $4 ...
|
o˰MFaHI檺ɦW $0 oܼơAĤ@ӱѼƴNO $1 ڡ
ҥHAunڭ̦b script ̭ $1 ܡANiH²檺ߧYUFYǫO\FI
nFAӰӨҤla㰲]ڭn@ script AA script |۰ʦCXۤvɦWA
٦᭱eTӰѼơAӦpOnH
[root@linux scripts]# vi sh07.sh
#!/bin/bash
# Program:
# The program will show it's name and first 3 parameters.
# History:
# 2005/08/25 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo "The script name is ==> $0"
[ -n "$1" ] && echo "The 1st parameter is ==> $1" || exit 0
[ -n "$2" ] && echo "The 2nd parameter is ==> $2" || exit 0
[ -n "$3" ] && echo "The 3th parameter is ==> $3" || exit 0
|
o{̭[WF@DZAYQ && || ӥ[HP_ $1 ~ $3 O_sbH
Ysb~ܡAYsbN_浲GpUG
[root@linux scripts]# sh sh07.sh theone haha quot
The script name is ==> sh07.sh
The 1st paramter is ==> theone
The 2nd paramter is ==> haha
The 3th paramter is ==> quot
|
Wo7ӨҤl²aHXGOQ bash \Ӥw
ա㧐Uڭ̴NnϥαP_Ӷi@ǤO\]wFAnn@@@
uny{zܡAP_AYOy if then zoاPO֩w@wnDzߪI
]ܦhɭԡAڭ̳n̾ڬYǸƨӧP_{ӦpiC|ҨӻAڭ̦bWYOm߷ϥΪ̿J
Y/N ɡAn椣PTXܡH²檺觋iHQ && P || ApGٷQn@OOH
uon if then o㧐Uڭ̴NӲ@I
Q if .... then
o if .... then O̱`P_F²檺ANOŦXYӱP_ɭԡA
NHiYu@NOFCڭ̥iH²檺oˬݡG
if [ P_ ]; then
P_߮ɡAiHi檺Ou@eF
fi
|
ܩP_P_kAPe@p`ЬۦPڡISOOApGڦhӱnPOɡA
F sh06.sh ӮרҡA]NONhӱgJ@ӤAp~A
٥iHhӤAӹj}IӬAPAAhH && || ӹj}AL̪NqOG
ҥHAbϥΤAP_A && || NPOUFAPFC|ҨӻA
sh06.sh ӨҤlڥiHgoˡG
[root@linux scripts]# vi sh06-2.sh
#!/bin/bash
# Program:
# This program will show the user's choice
# History:
# 2005/08/25 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input (Y/N): " yn
if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
echo "OK, continue"
exit 0
fi
if [ "$yn" == "N" ] || [ "$yn" == "n" ]; then
echo "Oh, interrupt!"
exit 0
fi
echo "I don't know what is your choice" && exit 0
|
LAѳoӨҤlݰ_ӡAG]SF_aH sh06.sh ٤²O
OApGڭ̦Ҽ{UAAzN|D if then nBFG
if [ P_ ]; then
P_߮ɡAiHi檺Ou@eF
else
P_߮ɡAiHi檺Ou@eF
fi
|
pGҼ{pAhiHϥγoӻykG
if [ P_@ ]; then
P_@߮ɡAiHi檺Ou@eF
elif [ P_G ]; then
P_G߮ɡAiHi檺Ou@eF
else
P_@PG߮ɡAiHi檺Ou@eF
fi
|
ڴNiHN sh06-2.sh goˡG
[root@linux scripts]# vi sh06-3.sh
#!/bin/bash
# Program:
# This program will show the user's choice
# History:
# 2005/08/25 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input (Y/N): " yn
if [ "$yn" == "Y" ] || [ "$yn" == "y" ]; then
echo "OK, continue"
elif [ "$yn" == "N" ] || [ "$yn" == "n" ]; then
echo "Oh, interrupt!"
else
echo "I don't know what is your choice"
fi
|
O_{ܱo²AӥB̧ǧP_AiHקKƧP_pAo˯uܮe]p{աI ^_^
nFApGڭnAҿJѼƬO_ hello O A
]NOApGڷQnDAAb{᭱ұĤ@ӰѼ (NO $1 ڡI) O_ hello A
- pGOܡAN "Hello, how are you ?"F
- pGS[ѼơANܨϥΪ̥nϥΪѼƤUFkF
- ӦpG[JѼƤO hello ANϥΪ̶ȯϥ hello ѼơC
ӵ{giHOo˪G
[root@linux scripts]# vi sh08.sh
#!/bin/bash
# Program:
# Show "Hello" from $1....
# History:
# 2005/08/28 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
if [ "$1" == "hello" ]; then
echo "Hello, how are you ?"
elif [ "$1" == "" ]; then
echo "You MUST input parameters, ex> $0 someword"
else
echo "The only parameter is 'hello'"
fi
|
MziHo{AOb $1 mJ hello, SJPHNJA
NiHݨ줣PXoO_ıo²檺ڡI ^_^CƹWA
Ǩo̡A]uܼF`FnFAUڭ~Ӫ@Ǥj@Io
ڭ̦be@wgǷ|F grep oӦnΪNAhǤ@ӥs netstat OA
oӫOiHdߨثeD}ҪAȰf (service ports)A
\ڭ̷|bA[]g~СAo̱zunDAڥiHQΡy
netstat -tuln zӨoثeDҰʪAȡA
ӥBoTIoˡG
[root@linux ~]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:199 0.0.0.0:* LISTEN
tcp 0 0 :::80 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::25 :::* LISTEN
|
WIOSr骺ӳAǯSr骺NNO port o
C port NNqOHXӱ` port PAȪYOG
- 80: WWW
- 22: ssh
- 21: ftp
- 25: mail
ڦpzL netstat hڪDO_}ҳo|ӥDnAȰfOH
ڥiH²檺o˥hgoӵ{G
[root@linux scripts]# vi sh09.sh
#!/bin/bash
# Program:
# Using netstat and grep to detect WWW,SSH,FTP and Mail services.
# History:
# 2005/08/28 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1. @@ǧiʧ@Ӥw
echo "Now, the services of your Linux system will be detect!"
echo -e "The www, ftp, ssh, and mail will be detect! \n"
# 2. }li@Ǵժu@AåB]X@ǸToI
testing=`netstat -tuln | grep ":80 "`
if [ "$testing" != "" ]; then
echo "WWW is running in your system."
fi
testing=`netstat -tuln | grep ":22 "`
if [ "$testing" != "" ]; then
echo "SSH is running in your system."
fi
testing=`netstat -tuln | grep ":21 "`
if [ "$testing" != "" ]; then
echo "FTP is running in your system."
fi
testing=`netstat -tuln | grep ":25 "`
if [ "$testing" != "" ]; then
echo "Mail is running in your system."
fi
|
oˤS@Ӥ@ӪˬdoO_ܦڡI ^_^CUӡAڭ̦AӪ@IC
ڭ̪DiHQ date ܤPɶA]iHQ $((p⦡)) ӭpƭȹBC
t~A date ]iHΨܦ 19710101 HӪy`ơz (Цۦd\ man date info date)
CAzO_iHg@p{AΨӡyphٳѴXѡHz]NOG
- ϥΪ̿JL̪hF
- AѲ{bhF
- ѨӤܡyٻݭnXѡz~hrˡC
GˤlH]|աAQΡy
date --date="YYYYMMDD"
+%s zNFڭ̩ҷQnopGzwggF{AөUgkլݬݡG
[root@linux scripts]# vi sh10.sh
#!/bin/bash
# Program:
# Tring to calculate your demobilization date at how many days
# later...
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1. iϥΪ̳o{γ~AåBiӦpJ榡H
echo "This program will try to calculate :"
echo "How many days about your demobilization date..."
read -p "Please input your demobilization date (YYYYMMDD ex>20050401): " date2
# 2. դ@UAoӿJeO_THQΥWܪko
date_d=`echo $date2 |grep '[0-9]\{8\}'`
if [ "$date_d" == "" ]; then
echo "You input the wrong format of date...."
exit 1
fi
# 3. }lpo
declare -i date_dem=`date --date="$date2" +%s`
declare -i date_now=`date +%s`
declare -i date_total_s=$(($date_dem-$date_now))
declare -i date_d=$(($date_total_s/60/60/24))
if [ "$date_total_s" -lt "0" ]; then
echo "You had been demobilization before: " $((-1*$date_d)) " ago"
else
declare -i date_h=$(($(($date_total_s-$date_d*60*60*24))/60/60))
echo "You will be demobilized after $date_d days and $date_h hours."
fi
|
@@@Ao{iHzphOpGOwghB͡A
٥iHDwghh[F㫢IܥiRaQ date X 1971/01/01 HӪ`ơA
APثe`ƨӤAMH@Ѫ` (60*60*24) ƥhp`ơA
No̪tF@ʧ@SWXڭ̩ҾǪda ^_^
ٯקKϥΪ̿J~ƦrAҥHhF@ӥWܪkP_O
oӨҤlAQn@sB͡AiH@@U
ҫmD
pͤ骺@DI[oI
Q case ..... esac P_
WӤp`쪺y if .... then .... fi zܼƪP_A
OH諸觋Ӥ몺ApGŦXANiYǦ欰AåBzLhh ( NO elif ... )
觋Ӷihܼƪ{XgAĴp sh08.sh Ӥp{ANOγo˪觋ӪoC
nAU@ڦhӬJwܼƤeAҦp sh08.sh AکһݭnܼƴNO "hello" ΪŦrӡA
ڥunwoܼƨӳ]wpNnFaHIiHϥΤ觋ӳ]pOH
N case ... in .... esac aALykpUG
case $ܼƦW in
"Ĥ@ܼƤe")
{q
;;
"ĤGܼƤe")
{q
;;
*)
]tĤ@ܼƤePĤGܼƤeL{q
exit 1
;;
esac
|
n`NOAoӻykOH case }YAӥH esac AԣHO esac OHQ@QAJM
if O fi A case MNON case ˵ۼgA۵MNO esac o ^_^AܦnOa
t~AC@ܼƤe{q᳣̫ݭnӤ (;;) ӥNӵ{qAonI
ܩݭn * oܼƤeb̫OHoO]ApGϥΪ̤OJܼƤe@ΤGɡA
ڭ̥iHiϥΪ̬TڡI|ҨӻAڭ̦pGN sh08.sh gܡA
Lӷ|ܦo˳I
[root@linux scripts]# vi sh08-2.sh
#!/bin/bash
# Program:
# Show "Hello" from $1.... by using case .... esac
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
case $1 in
"hello")
echo "Hello, how are you ?"
;;
"")
echo "You MUST input parameters, ex> $0 someword"
;;
*)
echo "Usage $0 {hello}"
;;
esac
|
bWo sh08-2.sh רҷApGAJy sh sh08-2.sh test zӰA
ùWN|X{yUsage sh08-2.sh {hello}zrˡAi̶ȯϥ hello
o˪觋ݭnYǩTwrӰ檺ܼƤeN㪺[KOH
oؤ觋zunxIoO]tΪܦhAȪҰ scripts OϥγoؼgkA
|ҨӻAڭ Linux AȱҰʩmؿOb /etc/init.d/ AڤwgDY
syslog AȡAڷQnsҰʳoӪAȡAiHo˰G
/etc/init.d/syslog restart
IO restart աpGziJ /etc/init.d/syslog N|ݨLϥΪO case ykA
åB|WwYǬJwܼƤeAAiHUF /etc/init.d/syslog A
script N|iAǫܼƥiHϥoKaI ^_^
@ӻAϥΡy case $ܼ in zoӻykA $ܼ jPبo觋G
- UFGҦpW쪺AQΡy script.sh variable z
觋Ӫ $1 oܼƪeAo]Ob /etc/init.d ؿUjhƵ{]p觋C
- ʦGzL read oӫOϥΪ̿JܼƪeC
oγ\zP٤AnAڭ̪gӵ{ӪGϥΪ̯J one, two, three A
åBNϥΪ̪ܼܨùWApGO one, two, three ɡANiϥΪ̶ȦoTؿܡC
[root@linux scripts]# vi sh11.sh
#!/bin/bash
# Program:
# Let user input one, two, three and show in screen.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo "This program will print your selection !"
# read -p "Input your choice: " choice
# case $choice in
case $1 in
"one")
echo "Your choice is ONE"
;;
"two")
echo "Your choice is TWO"
;;
"three")
echo "Your choice is THREE"
;;
*)
echo "Usage {one|two|three}"
;;
esac
|
ɡAziHϥΡy sh sh11.sh two z觋ӤUFOANiH۹^FC
WϥΪOUF觋AӦpGϥΪOʦɡANW 10, 11 檺 "#" A
ñN 12 [W (#)ANiHϥΪ̿JѼooˬO_ܦڡHI
Q function \
Oy
(function)z\ڡH²檺AA
ƥiHb shell script X@ۭqOFA̤j\OA
iH²Ƨڭ̫ܦh{X|ҨӻAW sh11.sh ACӿJG one, two, three
Xe@˰ڡ㨺ڴNiHϥ function ²ƤFI function ykOo˪G
fname NOڭ̪ۭqOW١ӵ{qNOڭ̭nL檺eFC
n`NOAb shell script A function ]w@wnb{̫eA
oˤ~bɳQiΪ{qInڭ̱N sh11.sh g@UG
[root@linux scripts]# vi sh11-2.sh
#!/bin/bash
# Program:
# Let user input one, two, three and show in screen.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
function printit(){
echo -n "Your choice is "
}
echo "This program will print your selection !"
case $1 in
"one")
printit; echo $1 | tr 'a-z' 'A-Z'
;;
"two")
printit; echo $1 | tr 'a-z' 'A-Z'
;;
"three")
printit; echo $1 | tr 'a-z' 'A-Z'
;;
*)
echo "Usage {one|two|three}"
;;
esac
|
HWҤlӻAڰF@ӨƦW٬ printit AҥHAڦb{q̭A
un printit ܡANܧڪ shell script nhy function printit .... z
̭Xӵ{qoI
MoAWoӨҤl|o²FAҥHz|ıo function nF`A
LApGYǵ{X@Aab script ƮɡAo function iNnho
iH²Ƶ{XAӥBiHyҲաzNAuܴΰաI
t~A function ]O֦ܼƪLܼƻP shell script A
ƦW٥N $0 AӫܼƤ]OH $1, $2... ӨN
o̫ܮed]y function fname() { {q } z $0, $1... P shell script
$0 OPCHW sh11-2.sh ӻApڤUFGy sh sh11-2.sh one z
oܦb shell script $1 "one" oӦrCOb printit() $1 hPo one LC
ڭ̱NWҤlAg@UAzMI
[root@linux scripts]# vi sh11-3.sh
#!/bin/bash
# Program:
# Let user input one, two, three and show in screen.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
function printit(){
echo "Your choice is $1"
}
echo "This program will print your selection !"
case $1 in
"one")
printit 1
;;
"two")
printit 2
;;
"three")
printit 3
;;
*)
echo "Usage {one|two|three}"
;;
esac
|
bWҤlApGzJy sh sh11-3.sh one zN|X{y Your choice is 1 zrˡ
O 1 OH]b{qAڭ̬OgFy printit 1 z 1 N| function $1
oˬO_zѩOH function x@IApGzٷQniLgܡC
LAڭ̶ȬOQn[A shell script ӤwAҥHAo̬ݬݧYiAѭzNno ^_^
F if...then...fi oرP_~AjiO{̭n@F
jiH_Yӵ{qAϥΪ̳]wFC
ҥHAIOӡyFzOCUڭ̴Nӽͤ@͡G
while do done, until do done
@ӻAj̱`NOUoتAFG
while [ condition ]
do
{q
done
|
oؤ觋A while Oy....ɡzAҥHAoؤ觋Oy
condition
߮ɡANijA condition ߤ~zNC
until [ condition ]
do
{q
done
|
oؤ觋P while ۤϡAOy
condition ߮ɡANפjA
_hNij骺{qCzO_nۤϰڡڭ̥H while Ӱ²檺mߦnFC
]ڭnϥΪ̿J yes Ϊ̬O YES ~{A_hN@iiϥΪ̿JrC
[root@linux scripts]# vi sh12.sh
#!/bin/bash
# Program:
# Use loop to try find your input.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
while [ "$yn" != "yes" ] && [ "$yn" != "YES" ]
do
read -p "Please input yes/YES to stop this program: " yn
done
|
WoӨDOy $yn oܼƤO "yes" B $yn ]O "YES" ɡA~ij馎{Cz
ӦpG $yn O "yes" "YES" ɡAN|}jo㨺pGϥ until OHo
L|ܦoˡG
[root@linux scripts]# vi sh12-2.sh
#!/bin/bash
# Program:
# Use loop to try find your input.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
until [ "$yn" == "yes" ] || [ "$yn" == "YES" ]
do
read -p "Please input yes/YES to stop this program: " yn
done
|
JӤ@UoӪF観ԣPI ^_^AӡApGڷQnp 1+2+3+....+100 oӼƾکOH
QΰjڡLOo˪G
[root@linux scripts]# vi sh13.sh
#!/bin/bash
# Program:
# Try to use loop to calculate the result "1+2+3...+100"
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
s=0
i=0
while [ "$i" != "100" ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "The result of '1+2+3+...+100' is ==> $s"
|
KKIzFy sh sh13.sh zANiHo 5050 oӼƾڤ~ڡIoAI
zۦ氵@UApGQnϥΪ̦ۦJ@ӼƦrA{ 1+2+... zJƦrA
ӦpgOHӫ²aHIץiHѦҤ@UDm߸̭@DI
for...do....done
۹ while, until j觋OnyŦXYӱzAA for oػykAhOy
wgDniXjzAILykOG
for (( l; ; B ))
do
{q
done
|
oػykAXƭȤ觋BAb for ᭱ATꤺeNqG
- lȡGYܼƦbj_lȡAH i=1 ]wnF
- ȡGܼƪȦboӭȪdAN~ijCҦp i<=100F
- BGC@@jɡAܼƪܤƶqCҦp i=i+1C
ȱo`NOAbyBz]wWApGCW[ 1 AhiHϥyi++z觋AYO i
Cj鳣|W[@NCnAڭ̥Hoؤ觋Ӷi 1 ֥[ 100 jaI
[root@linux scripts]# vi sh14.sh
#!/bin/bash
# Program:
# Try do calculate 1+2+....+100
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
s=0
for (( i=1; i<=100; i=i+1 ))
do
s=$(($s+$i))
done
echo "The result of '1+2+3+...+100' is ==> $s"
|
@ˤ]O²aIQγo for hiHjniXOIonΪFDubƭȤ譱ʧ@H
MOաڭ٥iHQΩU觋ӶiDƦr譱jB@I
for var in con1 con2 con3 ...
do
{q
done
|
HWҤlӻAo $var ܼƤebju@ɡG
- Ĥ@jɡA $var e con1 F
- ĤGjɡA $var e con2 F
- ĤTjɡA $var e con3 F
- ....
ڭ̥iH²檺mߡC]ڦTذʪAOO dog, cat, elephant TءA
ڷQC@泣XoˡGyThere are dogs...zrˡAhiHG
[root@linux scripts]# vi sh15.sh
#!/bin/bash
# Program:
# Using for .... loop to print 3 animal
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
for animal in dog cat elephant
do
echo "There are ""$animal""s.... "
done
|
²OaI ^_^CnFApGڷQnϥΪ̿JYӥؿA
MڧXYؿɦWvOHSӦpOnHIiHo˰ա
[root@linux scripts]# vi sh16.sh
#!/bin/bash
# Program:
# let user input a directory and find the whole file's permission.
# History:
# 2005/08/29 VBird First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1. ݬݳoӥؿO_sbڡH
read -p "Please input a directory: " dir
if [ "$dir" == "" ] || [ ! -d "$dir" ]; then
echo "The $dir is NOT exist in your system."
exit 1
fi
# 2. }lɮo
filelist=`ls $dir`
for filename in $filelist
do
perm=""
test -r "$dir/$filename" && perm="$perm readable"
test -w "$dir/$filename" && perm="$perm writable"
test -x "$dir/$filename" && perm="$perm executable"
echo "The file $dir/$filename's permission is $perm "
done
|
Iܦ쪺ҤlaQγoؤ觋AziHܻӳBz@ɮתSʩO
ڭ̰jNШo̤FLhΡANozݨDӪoC
scripts b椧eA̩ȪNOX{DFIڭ̦p
debug OHSkݭnzL scripts NiHӧP_O_DOIHI
MOIڭ̴NH bash ѼƨӶiP_aI
[root@linux ~]# sh [-nvx] scripts.sh
ѼơG
-n Gn scriptAȬdykDF
-v GA sccript eAN scripts eXùWF
-x GNϥΨ쪺 script eܨùWAoOܦΪѼơI
dҡG
dҤ@G sh16.sh LykDH
[root@linux ~]# sh -n sh16.sh
# YykSDAh|ܥTI
dҤGGN sh15.sh L{CXӡ
[root@linux ~]# sh -x sh15.sh
+ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/home/vbird/bin
+ export PATH
+ for animal in dog cat elephant
+ echo 'There are dogs.... '
There are dogs....
+ for animal in dog cat elephant
+ echo 'There are cats.... '
There are cats....
+ for animal in dog cat elephant
+ echo 'There are elephants.... '
There are elephants....
# ϥ -x uOl script nkALiHNҦ檺{qbeCXӡA
# pGO{qAhXɡA̫e|[W + rAܥLO{XӤwA
# ڪXhP standard output ڡpWҥܡC
|
bWdҤGAڭ̥iHzLo²檺Ѽ -x ӹF debug تAoiO@ӤihoѼơA
q`pGz script ooͰDɡAQγo -x ѼơANiHDDOoͦb@WFI
x sh ΪkANiHϱzbz Linux L{oIܩb Shell scripts
DzߤkWAݭny
hݡBhҥBå[Hק令ۤv˦Iz
O̧֪DzߤqFIW۷hBͦb}o@Ǭ۷Ϊ
scripts AYOziHN𫍧 scripts ӡAåB令AXۤvDˤlIDzߪĪG|O̧֪OI
t~Aڭ Linux tΥӴNܦhҰ script ApGzQnDC script ҥN\OH
iHH vi iJ script hd\@UAq`ߨND script تFC
|ҨӻAڭ̪ Linux YɮצW٬G /etc/init.d/portmap Ao script OFΪH
Q vi hd\̫eXrALX{pUTG
# description: The portmapper manages RPC connections, which are used by \
# protocols such as NFS and NIS. The portmap server must be \
# running on machines which act as servers for protocols which \
# make use of the RPC mechanism.
# processname: portmap
|
²檺ALOQΦb NFS P NIS W@ӱҰ RPC script A
Mڭ̦AQ http://www.google.com.tw hjM@U NFS, NIS P RPC A
ߨNDo script \oҥHAUzo{ script ɡA
pGOtδѪAQγoˬd觋A@wiHAѪաI
[oo ^_^
t~AҦdҳiHb
http://vbird.org.cn/linux_basic/0340bashshell-scripts/scripts.tgz
YI[o
- Ыإߤ@ script AA script ɭԡA script iHܡG 1. Aثe ( whoami )
2. AثeҦbؿ ( pwd)
#!/bin/bash
echo -e "Your name is ==> `whoami`"
echo -e "The current directory is ==> `pwd`"
- Цۦإߤ@{Aӵ{iHΨӭpyz٦XѥiHLͤzڡHH
#!/bin/bash
read -p "Pleas input your birthday (MMDD, ex> 0709): " bir
now=`date +%m%d`
if [ "$bir" == "$now" ]; then
echo "Happy Birthday to you!!!"
elif [ "$bir" -gt "$now" ]; then
year=`date +%Y`
total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))
echo "Your birthday will be $total_d later"
else
year=$((`date +%Y`+1))
total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))
echo "Your birthday will be $total_d later"
fi
- ϥΪ̿J@ӼƦrA{iH 1+2+3... @֥[ϥΪ̿JƦrC
#!/bin/bash
read -p "Please input an integer number: " number
i=0
s=0
while [ "$i" != "$number" ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "the result of '1+2+3+...$number' is ==> $s"
- g@{AL@άO: 1.) dݤ@U /root/test/logical oӦW٬O_sbF
2.) YsbAhإߤ@ɮסAϥ touch ӫإߡAإߧ}F
3.) pGsbܡAP_ӦW٬O_ɮסAYɮhNRإߤ@ӥؿAɦW logical A}F
4.) pGsbܡAӥBӦW٬ؿAhؿI
#!/bin/bash
if [ ! -e logical ]; then
touch logical
echo "Just make a file logical"
exit 1
elif [ -e logical ] && [ -f logical ]; then
rm logical
mkdir logical
echo "remove file ==> logical"
echo "and make directory logical"
exit 1
elif [ -e logical ] && [ -d logical ]; then
rm -rf logical
echo "remove directory ==> logical"
exit 1
else
echo "Does here have anything?"
fi
- ڭ̪D /etc/passwd ̭H : ӤjAĤ@欰bW١Cмg@{AiHN /etc/passwd
Ĥ@XAӥBC@泣H@ryThe 1 account is "root" zܡA 1 ܦơC
#!/bin/bash
accounts=`cat /etc/passwd | cut -d':' -f1`
for account in $accounts
do
declare -i i=$i+1
echo "The $i account is \"$account\" "
done