Skrip Bash: miwiti

Skrip Bash: miwiti
Bash Scripts Part 2: Loops
Skrip Bash, bagean 3: opsi baris printah lan ngalih
Skrip Bash, bagean 4: input lan output
Skrip Bash, bagean 5: sinyal, tugas latar mburi, manajemen skrip
Bash Scripts, Part 6: Fungsi lan Pangembangan Pustaka
Skrip Bash, bagean 7: sed lan pangolahan tembung
Bash Scripts, Part 8: Basa Pangolahan Data awk
Bash Scripts Part 9: Ekspresi Reguler
Bash Scripts Part 10: Conto Praktis
Skrip Bash, bagean 11: ngarepake lan otomatisasi utilitas interaktif

Dina iki kita bakal ngomong babagan skrip bash. Iki - skrip baris printah, ditulis kanggo cangkang bash. Ana cangkang liyane, kayata zsh, tcsh, ksh, nanging kita bakal fokus ing bash. Materi iki ditrapake kanggo kabeh wong, siji-sijine kondisi yaiku kemampuan kanggo nggarap baris printah Linux.

Skrip Bash: miwiti

Skrip baris printah minangka set perintah sing padha sing bisa dilebokake saka keyboard, diklumpukake ing file lan digabungake kanthi tujuan umum. Ing wektu sing padha, asil karya tim bisa dadi nilai independen utawa dadi input kanggo tim liyane. Skrip minangka cara sing kuat kanggo ngotomatisasi tumindak sing asring ditindakake.

Skrip Bash: miwiti

Dadi, yen kita pirembagan bab baris printah, iku ngijini sampeyan kanggo nindakake sawetara printah bebarengan, ngetik karo titik koma:

pwd ; whoami

Nyatane, yen sampeyan wis nyoba iki ing terminal sampeyan, skrip bash pisanan sampeyan sing nggunakake rong perintah wis ditulis. Kerjane kaya iki. Tim pisanan pwd nampilake informasi babagan direktori kerja saiki, banjur printah whoaminuduhake informasi babagan pangguna sing sampeyan mlebu minangka.

Nggunakake pendekatan iki, sampeyan bisa gabungke minangka akeh printah sing pengin ing siji baris, watesan mung jumlah maksimum bantahan sing bisa liwati kanggo program. Sampeyan bisa nemtokake watesan iki kanthi printah ing ngisor iki:

getconf ARG_MAX

Baris printah minangka alat sing apik, nanging sampeyan kudu ngetik printah saben-saben sampeyan butuh. Apa yen kita nulis sakumpulan printah menyang file lan mung nelpon file kasebut kanggo nglakokake? Nyatane, file sing kita gunakake diarani skrip baris perintah.

Cara kerja skrip bash

Nggawe file kosong nggunakake printah touch. Ing baris pisanan, sampeyan kudu nemtokake cangkang sing bakal digunakake. Kita kasengsem ing bash, dadi baris pisanan file bakal dadi:

#!/bin/bash

Ing papan liya ing file iki, simbol hash digunakake kanggo nuduhake komentar yen cangkang ora diproses. Nanging, baris pisanan minangka kasus khusus, minangka tandha pound sing diikuti karo tanda seru (urutan iki diarani sebang) lan dalan menyang bash, nuduhake menyang sistem sing script digawe khusus kanggo bash.

printah Shell dipisahake dening feed baris, komentar dipisahake dening tandha pound. Mangkene apa sing katon:

#!/bin/bash
# This is a comment
pwd
whoami

Ing kene, kaya ing baris printah, sampeyan bisa nulis printah ing siji baris, misahake karo titik koma. Nanging, yen sampeyan nulis perintah ing baris sing beda, file kasebut luwih gampang diwaca. Ing kasus apa wae, cangkang bakal ngolah.

Nyetel Idin ing File Skrip

Simpen file kanthi menehi jeneng myscript, lan skrip bash meh rampung. Saiki mung nggawe file iki bisa dieksekusi, yen ora, nalika sampeyan nyoba mbukak, sampeyan bakal nemoni kesalahan Permission denied.

Skrip Bash: miwiti
Nyoba mbukak file skrip kanthi ijin sing ora dikonfigurasi kanthi bener

Ayo nggawe file bisa dieksekusi:

chmod +x ./myscript

Saiki ayo nyoba nglakokake:

./myscript

Sawise nyetel ijin, kabeh bisa mlaku kaya sing dikarepake.

Skrip Bash: miwiti
Kasil mbukak skrip bash

Output pesen

Kanggo nyithak teks menyang konsol Linux, gunakake printah kasebut echo. Ayo gunakake kawruh babagan kasunyatan iki lan sunting skrip, nambah panjelasan menyang data sing ngasilake prentah sing wis ana:

#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami

Mangkene kedadeyan sawise mbukak skrip sing dianyari.

Skrip Bash: miwiti
Outputing pesen saka script

Saiki kita bisa nampilake label panjelasan nggunakake printah echo. Yen sampeyan ora ngerti carane nyunting file nggunakake alat Linux, utawa yen sampeyan durung weruh printah sadurunge echo, delengen iki materi.

Nggunakake Variabel

Variabel ngidini sampeyan nyimpen informasi ing file skrip, kayata asil printah, kanggo digunakake dening printah liyane.

Ora ana sing salah karo nglakokake prentah individu tanpa nyimpen asil karyane, nanging kemungkinan pendekatan iki winates banget.

Ana rong jinis variabel sing bisa digunakake ing skrip bash:

  • Variabel Lingkungan
  • Variabel panganggo

Variabel Lingkungan

Kadhangkala perintah cangkang kudu digarap sawetara data sistem. Contone, iki carane nampilake direktori ngarep pangguna saiki:

#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"

Elinga yen kita bisa nggunakake variabel sistem $HOME ing kuotasi pindho, iki ora bakal nyegah sistem saka pangling. Mangkene apa sing kedadeyan yen sampeyan mbukak skrip ing ndhuwur.

Skrip Bash: miwiti
Nggunakake Variabel Lingkungan ing Skrip

Nanging apa yen sampeyan pengin nampilake tandha dolar? Ayo coba iki:

echo "I have $1 in my pocket"

Sistem bakal ndeteksi tandha dollar ing senar diwatesi dening kuotasi lan nganggep kita wis referensi variabel. Skrip bakal nyoba nampilake nilai variabel sing ora ditemtokake. $1. Iki dudu sing kita butuhake. Apa sing kudu ditindakake?

Ing kahanan kaya iki, nggunakake karakter kontrol backslash sadurunge tandha dollar mbantu:

echo "I have $1 in my pocket"

Skrip saiki bakal ngasilake persis apa sing dikarepake.

Skrip Bash: miwiti
Nggunakake Urutan Uwal kanggo Output Tandha Dolar

Variabel panganggo

Saliyane variabel lingkungan, skrip bash ngidini sampeyan nyetel lan nggunakake variabel sampeyan dhewe ing skrip. Variabel kasebut nduweni nilai nganti skrip rampung.

Kaya variabel sistem, variabel pangguna bisa diakses kanthi nggunakake tandha dolar:
TNW-CUS-FMP - kode promo kanggo diskon 10% ing layanan kita, kasedhiya kanggo aktivasi ing 7 dina

#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"

Mangkene kedadeyan sawise mbukak skrip kasebut.

Skrip Bash: miwiti
Variabel Kustom ing Skrip

Panggantos printah

Salah sawijining fitur skrip bash sing paling migunani yaiku kemampuan kanggo ngekstrak informasi saka output perintah lan menehi menyang variabel, sing ngidini sampeyan nggunakake informasi kasebut ing ngendi wae ing file skrip.

Iki bisa ditindakake kanthi rong cara.

  • Kanthi karakter backtic "`"
  • Kanthi bantuan saka construction $()

Nalika nggunakake pendekatan pisanan, ati-ati supaya ora nggunakake kutipan siji tinimbang backtick. Printah kasebut kudu dilampirake ing rong lambang kasebut:

mydir=`pwd`

Ing pendekatan kapindho, padha ditulis kaya iki:

mydir=$(pwd)

Lan skrip, ing pungkasan, bisa uga katon kaya iki:

#!/bin/bash
mydir=$(pwd)
echo $mydir

Sajrone operasi, output saka printah pwdbakal disimpen ing variabel mydir, sing isine, nggunakake printah echo, bakal pindhah menyang console.

Skrip Bash: miwiti
Skrip sing nyimpen asil printah ing variabel

Operasi matematika

Kanggo nindakake operasi matematika ing file script, sampeyan bisa nggunakake construction saka wangun $((a+b)):

#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2

Skrip Bash: miwiti
Operasi matematika ing skrip

struktur kontrol if-then

Ing sawetara skenario, perlu kanggo ngontrol aliran eksekusi perintah. Contone, yen nilai tartamtu luwih saka limang, siji tumindak kudu dileksanakake, digunakake liyane. Iki ditrapake ing akeh kahanan, lan ing kene struktur kontrol bakal mbantu kita if-then. Ing wangun sing paling gampang, katon kaya iki:

if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
fi

Lan iki conto sing bisa digunakake:

#!/bin/bash
if pwd
then
echo "It works"
fi

Ing kasus iki, yen eksekusi printah pwdrampung kasil, teks "kerja" bakal ditampilake ing console.

Ayo nggunakake kawruh sing kita duwe lan nulis skenario sing luwih rumit. Ayo kita kudu golek pangguna ing /etc/passwd, lan yen ditemokake, lapor yen ana.

#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi

Iki kedadeyan sawise mbukak skrip iki.

Skrip Bash: miwiti
Panelusuran pangguna

Kene kita wis nggunakake printah grepkanggo nggoleki pangguna ing file /etc/passwd. Yen tim grepora pati ngerti, katrangane bisa ditemokake kene.

Ing conto iki, yen pangguna ditemokake, skrip bakal nampilake pesen sing cocog. Apa yen pangguna ora bisa ditemokake? Ing kasus iki, skrip mung bakal ngrampungake eksekusi tanpa ngandhani apa-apa. Aku uga pengin dheweke ngandhani babagan iki, mula ayo nambah kode kasebut.

Konstruksi kontrol yen-banjur-liyane

Supaya program bisa nglaporake asil telusuran sing sukses lan gagal, kita nggunakake konstruksi kasebut if-then-else. Mangkene carane nyiyapake:

if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
else
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
fi

Yen printah pisanan ngasilake nol, tegese wis kasil dieksekusi, kondisi kasebut bakal bener lan eksekusi ora bakal ditindakake ing cabang kasebut. else. Yen ora, yen soko liyane saka nul bali, kang tegese Gagal, utawa asil palsu, printah sawise else.

Ayo nulis skrip ing ngisor iki:

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi

Eksekusi dheweke mudhun else.

Skrip Bash: miwiti
Nglakokake skrip kanthi konstruksi if-then-else

Inggih, ayo nerusake lan takon dhewe babagan kahanan sing luwih angel. Apa yen sampeyan kudu mriksa ora siji kondisi, nanging sawetara? Contone, yen pangguna sing dibutuhake ditemokake, siji pesen kudu ditampilake, yen ana syarat liyane, pesen liyane kudu ditampilake, lan liya-liyane. Ing kahanan kaya mengkono, kahanan nested bakal mbantu kita. Katon kaya iki:

if ΠΊΠΎΠΌΠ°Π½Π΄Π°1
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
elif ΠΊΠΎΠΌΠ°Π½Π΄Π°2
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
fi

Yen printah pisanan ngasilake nol, sing nuduhake eksekusi sing sukses, printah ing blok pisanan bakal dieksekusi then, Yen ora, yen kondisi pisanan iku palsu, lan yen printah kapindho ngasilake nul, pemblokiran kaloro kode bakal kaleksanan.

#!/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

Ing skrip kasebut, sampeyan bisa, umpamane, nggawe pangguna anyar nggunakake perintah kasebut useradd, yen panelusuran ora ngasilake asil, utawa nindakake tindakan liya sing migunani.

Perbandingan Nomer

Ing skrip, sampeyan bisa mbandhingake nilai numerik. Ing ngisor iki dhaptar prentah sing cocog.

n1 -eq n2Ngasilake bener yen n1 podo karo n2.
n1 -ge n2 Ngasilake bener yen n1luwih utawa padha n2.
n1 -gt n2Ngasilake bener yen n1 luwih saka n2.
n1 -le n2Ngasilake bener yen n1kurang utawa padha n2.
n1 -lt n2Ngasilake bener yen n1 kurang saka n2.
n1 -ne n2Ngasilake bener yen n1ora padha n2.

Minangka conto, ayo nyoba salah sawijining operator perbandingan. Elinga yen ekspresi kasebut dilampirake ing tanda kurung.

#!/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

Punika printah iki bakal output.

Skrip Bash: miwiti
Mbandhingake angka ing skrip

Nilai variabel val1luwih saka 5, pungkasanipun cabang kaleksanan thenoperator comparison lan pesen sing cocog ditampilake ing console.

Perbandingan string

Skrip uga bisa mbandhingake nilai senar. Operator comparison katon cukup prasaja, nanging operator comparison string duwe peculiarities tartamtu, kang bakal kita tutul ing ngisor iki. Punika dhaptar operator.

str1 = str2 Tes strings kanggo kesetaraan, bali bener yen strings padha.
str1 != str2Ngasilake bener yen strings ora identik.
str1 < str2Ngasilake bener yen str1kurang saka str2.
str1 > str2 Ngasilake bener yen str1luwih saka str2.
-n str1 Ngasilake bener yen dawa str1Ndhuwur nul.
-z str1Ngasilake bener yen dawa str1padha karo nul.

Iki minangka conto perbandingan string ing skrip:

#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user  is the current logged in user"
fi

Minangka asil saka eksekusi skrip, kita entuk ing ngisor iki.

Skrip Bash: miwiti
Perbandingan String ing Skrip

Iki minangka salah sawijining fitur perbandingan string sing kudu dicritakake. Yaiku, operator ">" lan "<" kudu oncat nganggo garis miring terbalik, yen ora, skrip ora bakal bisa digunakake kanthi bener, sanajan ora ana pesen kesalahan sing bakal katon. Skrip nerjemahake tandha ">" minangka prentah kanggo ngarahake output.

Mangkene carane nggarap operator kasebut katon ing kode:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Iki minangka asil saka naskah.

Skrip Bash: miwiti
Perbandingan string, peringatan dibuwang

Elinga yen skrip, sanajan wis dieksekusi, menehi peringatan:

./myscript: line 5: [: too many arguments

Kanggo nyingkirake bebaya iki, kita nyimpulake $val2 ing kuotasi kaping pindho:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Saiki kabeh bisa digunakake kaya sing dikarepake.

Skrip Bash: miwiti
Perbandingan string

Fitur liyane saka operator ">" lan "<" yaiku cara kerjane karo karakter huruf gedhe lan huruf cilik. Kanggo mangerteni fitur iki, ayo nyiyapake file teks kanthi isi ing ngisor iki:

Likegeeks
likegeeks

Simpen nganggo jeneng myfilebanjur jalanake printah ing ngisor iki ing terminal:

sort myfile

Bakal ngurutake baris saka file kaya mangkene:

likegeeks
Likegeeks

tim sort, minangka standar, ngurutake senar kanthi urutan munggah, tegese huruf cilik ing conto kita luwih cilik tinimbang huruf gedhe. Saiki ayo nyiyapake skrip sing bakal mbandhingake senar sing padha:

#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Yen sampeyan mbukak, pranyata yen kosok balene - huruf cilik saiki luwih gedhe tinimbang huruf gedhe.

Skrip Bash: miwiti
urutan printah lan string comparison ing file script

Ing prentah mbandhingake, huruf gedhe luwih cilik tinimbang huruf cilik. Perbandingan string ing kene ditindakake kanthi mbandhingake kode karakter ASCII, urutan urutane gumantung marang kode karakter.

tim sort, ing siji, nggunakake urutan urutan sing ditemtokake ing setelan basa sistem.

Priksa file

Mungkin printah ing ngisor iki asring digunakake ing skrip bash. Dheweke ngidini sampeyan mriksa macem-macem kahanan babagan file. Punika dhaptar printah iki.

-d filePriksa manawa file ana lan yen iku direktori.
-e filePriksa manawa ana file.
-f file Priksa manawa ana file lan manawa file kasebut.
-r filePriksa manawa file kasebut ana lan bisa diwaca.
-s file ПPriksa manawa file kasebut ana lan ora kosong.
-w filePriksa manawa file kasebut ana lan bisa ditulis.
-x filePriksa manawa file ana lan bisa dieksekusi.
file1 -nt file2 Priksa manawa luwih anyar file1saka file2.
file1 -ot file2Priksa yen lawas file1saka file2.
-O file Priksa manawa file kasebut ana lan diduweni dening pangguna saiki.
-G filePriksa manawa file kasebut ana lan yen ID grup cocog karo ID grup pangguna saiki.

Prentah iki, uga akeh liyane sing dibahas saiki, gampang dieling-eling. Jeneng-jenenge, minangka singkatan kanggo macem-macem tembung, langsung nuduhake cek sing ditindakake.

Ayo coba salah sawijining prentah ing praktik:

#!/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

Skrip iki, kanggo direktori sing wis ana, bakal nampilake isine.

Skrip Bash: miwiti
Listing isi direktori

Kita pitados bilih sampeyan bisa eksprimen karo liyane saka printah ing dhewe, kabeh padha ditrapake miturut prinsip padha.

Hasil

Dina iki kita ngomong babagan carane miwiti nulis skrip bash lan nutupi sawetara perkara dhasar. Nyatane, topik pemrograman bash gedhe banget. Artikel iki minangka terjemahan saka bagean pisanan saka seri gedhe saka 11 materi. Yen sampeyan pengin nerusake sapunika, iki minangka dhaptar asli saka bahan kasebut. Kanggo penak, sing terjemahane wis sampeyan waca wis kalebu ing kene.

  1. Bash Script Step By Step - ing kene kita ngomong babagan carane miwiti nggawe skrip bash, panggunaan variabel dianggep, konstruksi kondisional, kalkulasi, mbandhingake angka, senar, nemokake informasi babagan file diterangake.
  2. Bash Scripting Part 2, Bash sing apik tenan - ing kene fitur nggarap for and while loops dicethakakΓ©.
  3. Bash Scripting Part 3, Parameter & opsi - materi iki dikhususake kanggo paramèter lan tombol baris perintah sing bisa dikirim menyang skrip, nggarap data sing dilebokake pangguna lan bisa diwaca saka file.
  4. Bash Scripting Part 4, Input & Output - ing kene kita ngomong babagan deskriptor file lan nggarap, babagan input, output, kesalahan, stream redirection output.
  5. Bash Scripting Part 5, Sighals & Jobs - materi iki darmabakti kanggo sinyal Linux, pangolahan ing skrip, dijadwalake peluncuran skrip.
  6. Bash Scripting Part 6, Fungsi - ing kene sampeyan bisa sinau babagan nggawe lan nggunakake fungsi ing skrip, babagan ngembangake perpustakaan.
  7. Bash Scripting Part 7, Nggunakake sed β€” artikel iki babagan nggarap editor teks stream sed.
  8. Bash Scripting Part 8, Nggunakake awk - materi iki dikhususake kanggo program ing basa pangolahan data awk.
  9. Bash Scripting Part 9, Ekspresi Reguler - ing kene sampeyan bisa maca babagan panggunaan ekspresi reguler ing skrip bash.
  10. Bash Scripting Part 10, Conto Praktis - ing kene ana cara kanggo nggarap pesen sing bisa dikirim menyang pangguna, uga cara kanggo ngawasi disk.
  11. Bash Scripting Part 11, Ngarepake Command - materi iki darmabakti kanggo alat Nyana, karo sampeyan bisa ngotomatisasi interaksi karo keperluan interaktif. Utamane, iki babagan nyana skrip lan cara interaksi karo skrip bash lan program liyane.

Kita mikir yen salah sawijining perkara sing apik babagan seri artikel iki yaiku diwiwiti saka sing paling dhasar, cocog kanggo pangguna ing level apa wae, mboko sithik ndadΓ©kakΓ© topik sing cukup serius, menehi saben wong kesempatan kanggo maju ing skrip baris perintah Linux.

Para maos ingkang minulya! Kita takon guru pemrograman bash kanggo ngomong babagan carane dheweke entuk tingkat penguasaan, nuduhake rahasia, lan kita ngenteni tayangan saka wong-wong sing nembe nulis naskah pertama.

Skrip Bash: miwiti

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Terjemahake seri artikel liyane?

  • Ya!

  • Ora perlu

1030 pangguna milih. 106 kedhaftar abstained.

Source: www.habr.com

Add a comment