Niaj hnub no peb yuav tham txog bash scripts. Qhov no - hais kom ua kab scripts, sau rau lub plhaub bash. Muaj lwm lub plhaub xws li zsh, tcsh, ksh, tab sis peb yuav tsom mus rau bash. Cov khoom siv no yog npaj rau txhua tus neeg, tib lub sijhawm yog lub peev xwm ua haujlwm hauv kab hais kom ua Linux
Cov kab lus hais kom ua yog sau los ntawm tib cov lus txib uas tuaj yeem nkag los ntawm cov keyboard, sau rau hauv cov ntaub ntawv thiab koom ua ke los ntawm qee lub hom phiaj. Hauv qhov no, cov txiaj ntsig ntawm pab pawg ua haujlwm tuaj yeem yog tus nqi ywj pheej lossis ua cov ntaub ntawv nkag rau lwm pab pawg. Scripts yog ib txoj hauv kev zoo los ua kom cov haujlwm nquag ua.
Yog li, yog tias peb tham txog kab hais kom ua, nws tso cai rau koj ua ntau cov lus txib ib zaug los ntawm kev nkag mus rau lawv sib cais los ntawm semicolon:
pwd ; whoami
Qhov tseeb, yog tias koj sim qhov no hauv koj lub davhlau ya nyob twg, koj thawj tsab ntawv bash uas muaj ob lo lus txib twb tau sau lawm. Nws ua haujlwm zoo li no. Pab neeg ua ntej pwd qhia cov ntaub ntawv hais txog kev ua haujlwm tam sim no, tom qab ntawd cov lus txib whoamiqhia cov ntaub ntawv hais txog tus neeg siv koj nkag rau hauv li.
Siv txoj hauv kev no, koj tuaj yeem ua ke ntau cov lus txib raws li koj nyiam ntawm ib kab, qhov kev txwv nkaus xwb yog cov lus sib cav ntau tshaj plaws uas tuaj yeem dhau mus rau qhov program. Koj tuaj yeem txhais qhov txwv no siv cov lus txib hauv qab no:
getconf ARG_MAX
Cov kab hais kom ua yog ib qho cuab yeej zoo, tab sis koj yuav tsum sau cov lus txib rau hauv nws txhua zaus koj xav tau. Yuav ua li cas yog tias peb sau ib txheej ntawm cov lus txib rau hauv cov ntaub ntawv thiab tsuas yog hu ua cov ntaub ntawv kom ua tiav lawv? Qhov tseeb, cov ntaub ntawv peb tab tom tham txog yog hu ua kab lus hais kom ua.
Lwm cov kab hauv cov ntaub ntawv no siv lub cim hash los qhia cov lus hais tias lub plhaub tsis ua haujlwm. Txawm li cas los xij, thawj kab yog ib rooj plaub tshwj xeeb, muaj qhov hash ua raws li lub cim exclamation (qhov no yog hu ua shebang) thiab txoj kev mus bash, qhia rau lub kaw lus uas tsab ntawv tau tsim tshwj xeeb rau bash.
Plhaub cov lus txib raug cais los ntawm kab noj, cov lus pom raug cais los ntawm hash kos npe. Nov yog qhov nws zoo li:
#!/bin/bash
# This is a comment
pwd
whoami
Ntawm no, ib yam li ntawm kab hais kom ua, koj tuaj yeem sau cov lus txib ntawm ib kab, sib cais los ntawm semicolons. Txawm li cas los xij, yog tias koj sau cov lus txib ntawm cov kab sib txawv, cov ntaub ntawv nyeem tau yooj yim dua. Txawm li cas los xij, lub plhaub yuav ua rau lawv.
Teeb tsa cov ntawv tso cai
Txuag cov ntaub ntawv muab nws lub npe myscript, thiab kev ua haujlwm ntawm kev tsim cov ntawv bash yuav luag tiav. Tam sim no txhua yam uas tseem tshuav yog ua kom cov ntaub ntawv no ua tiav, txwv tsis pub, yog tias koj sim khiav nws, koj yuav ntsib qhov yuam kev. Permission denied.
Sim khiav cov ntawv sau nrog kev tso cai tsis raug
Cia peb ua cov ntaub ntawv executable:
chmod +x ./myscript
Tam sim no cia peb sim ua nws:
./myscript
Tom qab teeb tsa kev tso cai txhua yam ua haujlwm raws li nws yuav tsum tau ua.
#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami
Qhov no yog qhov tshwm sim tom qab khiav cov ntawv tshiab.
Tshaj tawm cov lus los ntawm tsab ntawv
Tam sim no peb tuaj yeem tso cov lus piav qhia siv cov lus txib echo. Yog tias koj tsis paub yuav ua li cas kho cov ntaub ntawv siv Linux cov cuab yeej, lossis koj tsis tau pom cov lus txib ua ntej echo, saib qhov no cov khoom.
Tsis muaj ib yam dab tsi tsis ncaj ncees lawm nrog kev ua raws li tus kheej cov lus txib yam tsis tau khaws cia lawv cov txiaj ntsig, tab sis txoj hauv kev no tsis tshua muaj kev txwv hauv nws lub peev xwm.
Muaj ob hom kev hloov pauv uas tuaj yeem siv rau hauv bash scripts:
Environment Variables
Tus neeg siv Variables
Environment Variables
Qee lub sij hawm lub plhaub commands yuav tsum ua haujlwm nrog qee cov ntaub ntawv kaw lus. Nov yog ib qho piv txwv ntawm yuav ua li cas tso saib cov neeg siv tam sim no lub tsev directory:
#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"
Thov nco ntsoov tias peb tuaj yeem siv qhov system sib txawv $HOME nyob rau hauv ob nqe lus, qhov no yuav tsis tiv thaiv lub system los ntawm kev lees paub nws. Qhov no yog qhov koj tau txais yog tias koj khiav qhov xwm txheej saum toj no.
Siv ib puag ncig hloov pauv hauv ib tsab ntawv
Yuav ua li cas yog tias koj yuav tsum tau tso ib tug duas kos npe rau ntawm qhov screen? Wb sim qhov no:
echo "I have $1 in my pocket"
Lub kaw lus yuav ntes tus lej kos npe hauv ib txoj hlua hais thiab xav tias peb tau hais txog qhov sib txawv. Tsab ntawv yuav sim ua kom pom tus nqi ntawm qhov tsis sib xws $1. Qhov no tsis yog qhov peb xav tau. Yuav ua li cas?
Hauv qhov xwm txheej no, siv tus cwj pwm khiav, rov qab, ua ntej tus lej nyiaj yuav pab:
echo "I have $1 in my pocket"
Tsab ntawv yuav tam sim no tso tawm raws nraim li qhov xav tau.
Siv qhov kev khiav tawm ib ntus los luam tus lej nyiaj
Tus neeg siv Variables
Ntxiv rau qhov hloov pauv ib puag ncig, bash scripts tso cai rau koj los txhais thiab siv koj tus kheej hloov pauv hauv tsab ntawv. Cov kev hloov pauv no tuav tus nqi kom txog thaum tsab ntawv ua tiav.
Raws li nrog cov kev hloov pauv hauv lub cev, cov neeg siv hloov pauv tuaj yeem nkag tau siv tus lej kos npe:
TNW-CUS-FMP - promo code rau 10% luv nqi ntawm peb cov kev pabcuam, muaj rau kev ua haujlwm hauv 7 hnub
#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"
Qhov no yog qhov tshwm sim tom qab khiav xws li tsab ntawv.
Hauv qhov piv txwv no, yog tias tus neeg siv pom, tsab ntawv yuav nthuav tawm cov lus sib xws. Yuav ua li cas yog tias tus neeg siv nrhiav tsis tau? Hauv qhov no, tsab ntawv yuav tsuas ua kom tiav yam tsis tau qhia rau peb. Peb xav kom nws qhia peb txog qhov no, yog li peb yuav txhim kho cov cai.
yog-ces-lwm tswj tsim
Txhawm rau kom qhov kev zov me nyuam tuaj yeem tshaj tawm ob qho txiaj ntsig ntawm kev tshawb nrhiav thiab kev ua tsis tiav, peb yuav siv qhov kev tsim kho if-then-else. Nov yog nws ua haujlwm li cas:
if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
else
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
fi
Yog tias thawj qhov kev hais kom rov qab xoom, uas txhais tau hais tias nws tau ua tiav, qhov xwm txheej yuav muaj tseeb thiab kev tua yuav tsis ua raws li cov ceg. else. Txwv tsis pub, yog tias ib yam dab tsi uas tsis yog xoom raug xa rov qab, uas yuav qhia tias tsis ua haujlwm, lossis qhov tshwm sim tsis tseeb, cov lus txib tom qab else.
Wb sau tsab ntawv nram no:
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesnβt exist"
fi
Zoo, cia peb mus thiab nug peb tus kheej txog cov xwm txheej nyuaj dua. Yuav ua li cas yog tias koj yuav tsum tau kuaj tsis yog ib qho mob, tab sis ob peb? Piv txwv li, yog tias tus neeg siv xav tau pom, ib cov lus yuav tsum tau muab tso tawm, yog tias muaj qee qhov xwm txheej tau ntsib, lwm cov lus yuav tsum raug tso tawm, thiab lwm yam. Hauv qhov xwm txheej zoo li no, cov xwm txheej zes yuav pab tau peb. Nws zoo li no:
if ΠΊΠΎΠΌΠ°Π½Π΄Π°1
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
elif ΠΊΠΎΠΌΠ°Π½Π΄Π°2
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
fi
Yog tias thawj qhov kev hais kom rov qab xoom, uas qhia tias nws ua tiav, cov lus txib hauv thawj qhov thaiv yuav raug tua. then, txwv tsis pub, yog thawj qhov xwm txheej tsis tseeb thiab yog tias qhov kev hais kom ua thib ob rov xoom, qhov thaiv thib ob ntawm cov lej yuav raug tua.
#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesnβt exist but anyway there is a directory under /home"
fi
Hauv cov ntawv zoo li no, koj tuaj yeem, piv txwv li, tsim tus neeg siv tshiab siv cov lus txib useradd, yog tias qhov kev tshawb nrhiav tsis tau tsim cov txiaj ntsig, lossis ua lwm yam muaj txiaj ntsig.
Kev sib piv ntawm cov lej
Hauv cov ntawv sau koj tuaj yeem sib piv cov lej. Hauv qab no yog cov npe ntawm cov lus txib uas cuam tshuam.
n1 -eq n2Rov qab muaj tseeb yog tias n1 sib npaug n2. n1 -ge n2 Rov qab muaj tseeb yog tias n1ntau los yog sib npaug n2. n1 -gt n2Rov qab muaj tseeb yog tias n1 ntau tshaj n2. n1 -le n2Rov qab muaj tseeb yog tias n1tsawg los yog sib npaug n2. n1 -lt n2Rov qab muaj tseeb yog tias n1 tsawg dua n2. n1 -ne n2Rov qab muaj tseeb yog tias n1tsis sib npaug n2.
Ua piv txwv, cia peb sim ib qho ntawm cov neeg ua haujlwm sib piv. Nco ntsoov tias cov lus qhia yog nyob rau hauv square brackets.
#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi
Qhov no yog qhov lus txib no yuav tso tawm.
Kev sib piv ntawm cov lej hauv cov ntawv sau
Tus nqi sib txawv val1ntau dua 5, ceg yuav raug tua thentus neeg teb xov tooj sib piv thiab cov lus sib raug tau tshwm sim hauv console.
#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi
Bash Scripting Part 3, Parameters & options - Cov ntaub ntawv no tau mob siab rau cov kab lus hais kom ua thiab cov yuam sij uas tuaj yeem dhau mus rau cov ntawv sau, ua haujlwm nrog cov ntaub ntawv uas tus neeg siv nkag mus thiab uas tuaj yeem nyeem los ntawm cov ntaub ntawv.
Bash Scripting Part 4, Input & Output - Ntawm no peb tab tom tham txog cov ntaub ntawv piav qhia thiab ua haujlwm nrog lawv, txog kev tawm tswv yim, tso tawm, kev ua yuam kev kwj, thiab hais txog qhov tso zis tawm.
Bash Scripting Part 5, Sighals & Jobs - Cov ntaub ntawv no tau mob siab rau Linux cov cim, lawv ua cov ntawv sau, thiab tso cov ntawv sau rau ntawm lub sijhawm.
Bash Scripting Part 6, Functions - ntawm no koj tuaj yeem kawm txog kev tsim thiab siv cov haujlwm hauv cov ntawv sau thiab tsim cov tsev qiv ntawv.
Bash Scripting Part 10, Cov Piv Txwv Siv Tau - Ntawm no yog cov tswv yim rau kev ua haujlwm nrog cov lus uas tuaj yeem xa mus rau cov neeg siv, nrog rau txoj hauv kev rau kev saib xyuas disk.
Bash Scripting Part 11, Cia siab tias yuav hais kom ua - Cov ntaub ntawv no tau mob siab rau lub cuab yeej Cia siab, uas koj tuaj yeem ua haujlwm nrog kev sib tham sib tham. Tshwj xeeb, peb tab tom tham txog kev cia siab rau cov ntawv sau thiab lawv cov kev cuam tshuam nrog bash scripts thiab lwm yam kev pab cuam.
Peb ntseeg hais tias ib qho ntawm cov yam ntxwv tseem ceeb ntawm cov kab lus no yog tias, pib los ntawm qhov yooj yim tshaj plaws, tsim nyog rau cov neeg siv ntawm txhua qib, nws maj mam ua rau cov ntsiab lus tseem ceeb heev, muab sijhawm rau txhua tus neeg los mus rau hauv kev tsim ntawm Linux kab ntawv kab lus. .
Nyob zoo cov neeg nyeem! Peb thov kom bash programming gurus tham txog yuav ua li cas lawv mus txog qhov siab ntawm lawv cov kev txawj ntse, qhia lawv cov lus zais, thiab peb tos ntsoov yuav tau txais kev tshoov siab los ntawm cov neeg uas nyuam qhuav sau lawv thawj tsab ntawv.
Tsuas yog cov neeg siv sau npe tuaj yeem koom nrog hauv daim ntawv ntsuam xyuas. Kos npe rau hauvthov.