(START..END) sintaksisi bash 3.0+ versiyasidan boshlab qoʻllab-quvvatlanadi va (START..END..INCREMENT) sintaksisi bash 4.0+ versiyasidan boshlab qoʻllab-quvvatlanadi:
uchun VAR ichida {Misol (i=6 bo'lganda to'ldiriladi va i=3 va i=5 bo'lganda bajarilmaydi): uchun i in (1..8); qil agar[ $i -eq 6 ]; keyin sindirish; fi agar[ $i -eq 3 ] || [ $i -ekv 5 ]; keyin davom ettirish; fi echo $i bajarildi Bajarish natijasi: i uchun $ $ (1..8); do \ > if [ $i -eq 6 ]; keyin sindirish; fi; \ > agar [ $i -eq 3 ] || [ $i -ekv 5 ]; keyin davom eting; fi; \ > echo $i; \ > bajarildi 1 2 4
Loop turlaridagi farqning qisqacha tavsifi:
for - bajariladigan ob'ektlar mavjud ekan, amalni bajaradi (masalan, stdin, fayl yoki funksiyadan oqimni o'qish);
while - qadar harakatni bajaradi holat haqiqat;
qadar - qancha vaqtgacha bajariladi holat haqiqatga aylanmaydi, ya'ni. Hozircha bu yolg'on.
Keling, skriptning ushbu versiyasini tsikl bilan ko'rib chiqaylik:
$ cat loop.sh #!/bin/bash `ls -1` oʻzgaruvchisi uchun “$variable” echo bajarildi
Sintaksis juda oddiy va misolda juda aniq ko'rsatilgan:
for (siklni boshlash) o'zgaruvchisi (biz amal qiladigan o'zgaruvchini e'lon qilish) (siklga oqim yuborish) `ls -1` (bajarish va $variable o'zgaruvchisiga o'tkazish buyrug'i). Bajarildi va bajarildi - bu siklning "tanasi" bo'lib, uning doirasida qabul qilingan ma'lumotlar bo'yicha asosiy harakatlar bajariladi va echo "$variable" - bu tsikl tomonidan amalga oshiriladigan haqiqiy harakat.
Keling, misolni biroz o'zgartiramiz va buyruqni aniq ko'rsatish o'rniga biz ikkinchi o'zgaruvchidan foydalanamiz:
$ cat loop.sh #!/bin/bash ls=`ls -1` $ls dagi oʻzgaruvchi uchun “$variable” aks-sadosi bajarildi
Endi ls -1 buyrug'i alohida o'zgaruvchiga uzatiladi, bu esa sikl bilan yanada moslashuvchan ishlash imkonini beradi. Loopdagi o'zgaruvchi o'rniga siz funktsiyadan ham foydalanishingiz mumkin:
$ cat loop.sh #!/bin/bash lsl () ( ls -1 ) `lsl` ichidagi oʻzgaruvchi uchun “$variable” echo bajarildi
For siklining asosiy sharti shundan iboratki, unga berilgan buyruq amal qilish uchun ob'ektlarni o'z ichiga olgan holda bajariladi. Yuqoridagi misolga asoslanib - ls -1 da ko'rsatish uchun fayllar mavjud ekan - tsikl ularni o'zgaruvchiga uzatadi va "loop tanasi" ni bajaradi. Katalogdagi fayllar ro'yxati tugashi bilan sikl o'z bajarilishini yakunlaydi.
Keling, misolni biroz murakkablashtiraylik.
Katalogda fayllar ro'yxati mavjud:
$ ls -1 fayl1 fayl2 fayl3 fayl4 fayl5 loop.sh nofile1 nofile2 nofile3 nofile4 nofile5
Biz ulardan faqat so'zi bo'lmaganlarini tanlashimiz kerak " yo'q«:
$ cat loop.sh #!/bin/bash lsl=`ls -1` oʻzgaruvchi uchun $lsl do echo "$variable" | grep -v "yo'q" bajarildi $ ./loop.sh fayl1 fayl2 fayl3 fayl4 fayl5 loop.sh
Siz tsiklda shartli ifodalardan ham foydalanishingiz mumkin ( shartli ifodalar) […] shartlarni tekshirish va agar shart ishga tushirilsa, tsiklni uzish uchun break iborasi.
Ushbu misolni ko'rib chiqing:
$ cat loop.sh #!/bin/bash lsl=`ls -1` $lsl dagi oʻzgaruvchi uchun bajaring if [ $variable != "loop.sh" ] keyin "$variable" echo | grep -v "yo'q" boshqa to'xtash fi tugadi
Loop.sh fayliga duch kelmaguncha tsikl davom etadi. Loopning bajarilishi ushbu faylga yetib borishi bilan, tsikl break buyrug'i bilan to'xtatiladi:
$ ./loop.sh fayl1 fayl2 fayl3 fayl4 fayl5
Yana bir misol, tsiklning tanasini bajarishdan oldin arifmetik amallardan foydalanish:
$ cat loop.sh #!/bin/bash for ((count=1; count<11; count++)) do echo "$count" done
Bu erda biz uchta boshqaruv buyrug'ini o'rnatamiz - count=1, nazorat qilish sharti - count 11 dan kichik bo'lsa va bajarish uchun buyruq - count +1:
while tsikli qanday ishlashini aniq ko'rsatadigan oddiy misol:
$ cat loop.sh #!/bin/bash count=0 [ $count -lt 10 ] bajarilganda ((count++)) echo $count bajarildi
Biz $count oʻzgaruvchisini nolga qoʻyamiz, soʻngra “$count oʻndan kam boʻlsa, tsiklni bajaring” sharti bilan whi le siklini ishga tushiramiz. Loopning tanasida biz bajaramiz postfiks ortishi$count o'zgaruvchisiga +1 va natija stdout-ga chop etiladi.
Amalga oshirish natijasi:
$ ./loop.sh 1 2 3 4 5 6 7 8 9 10
$count o'zgaruvchisining qiymati 10 ga yetishi bilan tsikl to'xtadi.
while qanday ishlashini ko'rsatadigan "cheksiz" halqaning yaxshi namunasi:
$ cat loop.sh #!/bin/bash count=10 esa [ 1 = 1 ] do ((count++)) echo $count bajarildi $ ./loop.sh ... 5378 5379 5380 5381 5382 5383 ^C
Qabul qilish davri xuddi shunday ishlaydi, lekin teskari yo'nalishda:
$ cat loop.sh #!/bin/bash count=0 [ $count -gt 10 ] bajarilguncha ((count++)) echo $count bajarildi
Bu erda biz shunga o'xshash shartni o'rnatamiz, lekin "o'zgaruvchi 10 dan kichik bo'lsa" o'rniga "o'zgaruvchi 10 dan katta bo'lguncha" ni belgilaymiz. Amalga oshirish natijasi:
$ ./loop.sh 1 2 3 4 5 6 7 8 9 10 11
Agar yuqoridagi “cheksiz sikl” misoli qadar yordamida bajarilsa, while dan farqli ravishda hech narsa chiqarmaydi:
$ cat loop.sh #!/bin/bash count=10 [ 1 = 1 ] bajarilgunga qadar ((count++)) echo $count bajarildi $ ./loop.sh $
Chunki " holat» dastlab « rost"— tsiklning tanasi bajarilmaydi.
Xuddi for tsiklidagi kabi, while va qadar funksiyalaridan foydalanishingiz mumkin. Masalan, server holatini tekshiradigan real skriptdan olingan tsikl Tomcat(PID tizimdan olingan SLES, boshqa tizimlarda farq qilishi mumkin), biroz soddalashtirilgan versiya:
$ cat loop.sh #!/bin/bash check_tomcat_status () ( RUN=`ps aux | grep tomcat | grep -v grep | grep java | awk "(chop $2)"` ) esa check_tomcat_status agar [ -n "$ boʻlsa, bajaring. RUN" ] keyin printf "DIQQAT: Tomcat hali ham PID $RUN bilan ishlaydi." else printf "Tomcat to'xtadi, davom etmoqda...nn" uzilish fi tugadi
Amalga oshirish natijasi:
$ ./loop.sh OGOHLANTIRISH: Tomcat hali ham PID 14435 26548 bilan ishlamoqda. OGOHLANTIRISH: Tomcat hali ham PID 14435 26548 bilan ishlamoqda. OGOHLANTIRISH: Tomcat hali ham PID 14435 26548 bilan ishlamoqda. OGOHLANTIRISH: Tomcat hali ham PID1645.5 bilan ishlaydi. PID 14435 26548 bilan ishlaydi. OGOHLANTIRISH: Tomcat hali ham PID 14435 26548 bilan ishlaydi. OGOHLANTIRISH: Tomcat hali ham PID 14435 26548 bilan ishlamoqda. OGOHLANTIRISH: Tomcat hali ham PID 14435 bilan ishlamoqda
To'liq versiya:
Check_tomcat_status () ( RUN=`ps aux | grep tomcat | grep -v grep | grep java | awk "(2$ chop etish)"` ) check_tomcat_status paytida; agar [ -n "$RUN" ] bo'lsa, printf "DIQQAT: Tomcat hali ham PID $RUN bilan ishlayapti. To'xtatingmi? " javobi "Tomcat to'xtatilmoqda..." "O'rnatish davom etmoqda..." && $CATALINA_HOME/bin/shutdown sh 2&>1 /dev/null || agar [ -n "$RUN" ] bo'lsa, 2 uyquni buzing, keyin printf "Tomcat ishlayapti. Uni o'ldirasizmi? " javobi "Tomcat o'ldirilmoqda..." "O'rnatish davom etmoqda...n" && $RUN || break uyqu 2 fi else printf "Tomcat to'xtadi, davom etmoqda...nn" break fi bajarildi
Javob funktsiyasi maqolada tasvirlangan, ammo bu erda biroz takomillashtirilgan versiya qo'llaniladi:
Javob () (javobni o'qiyotganda; aks-sadosi $javobni | ichida bajaring) printf "$1n" 0 tanaffusni qaytaradi;; |) printf "$2n" 1 tanaffusni qaytarish;; *) printf "Iltimos, Y(ha) yoki N(no) kiriting!" esac bajarildi )
Bu erda while va qadar dan foydalanish mumkin edi - lekin for tsikli emas, chunki for bir marta ishlagan bo'lardi (PID ni oldi va tugadi).
Va endi tsiklning beshinchi mavzusiga navbat keldi. Unda men bash buyrug'i tarjimonining boshqaruv tuzilmalarini ko'rib chiqishni davom ettiraman. Oldingi postda shartli bayonotlar muhokama qilindi. Endi navbat loop operatorlari kabi integral til tuzilmalariga keldi. Looplar ham shartlar kabi buyruqlarni bajarish tartibini nazorat qilishni ta'minlovchi vositalardir.
Bash for, while, qadar va tanlash sikllarini qo'llab-quvvatlaydi. Endi ularning har birini batafsil ko'rib chiqishga o'tamiz.
for tsikli operatori
for bayonotining umumiy sintaksisi:
o'zgaruvchi uchun
qil
buyruqlar ro'yxati
bajarildi
While sikl operatori
while iborasining umumiy sintaksisi:
ro'yxat 1 esa
qil
ro'yxat 2
bajarildi
Loop bayonotigacha
qadar iborasining umumiy sintaksisi:
1 ro'yxatigacha
qil
ro'yxat 2
bajarildi
Loop bayonotini tanlang
Tanlash bayonotining umumiy sintaksisi:
o'zgaruvchini tanlang
qil
ro'yxati
bajarildi
Ko'rish uchun faylni tanlang:
1) /home/istergul/temp/file.txt
2) /home/istergul/temp/proto.txt
3) /home/istergul/temp/readme
4) Chiqish
Keyingi mavzu shartli parametrlarni almashtirishni ko'rib chiqadi. Fikrlaringizni kutaman.
Looplar har qanday dastur yoki skriptlarni yozishda juda qulay narsa, hatto zarur. Ular bizga kodning ma'lum bir qismini ma'lum bir necha marta bajarishga imkon beradi. Tabiiyki, bash bir necha turdagi looplarga ega. Biz tsikllarni tasvirlab beramiz uchun, uchun, davomida, qadar. In va for bir xil gapning turli sintaksisi hisoblansa-da, menimcha, ular bir-biridan while dan to gacha ko'proq farq qiladi.
Velosiped uchun Bu hisoblagichga ega bo'lgan pastadir. Loopning tanasida joylashgan kod bloki for in operatori ro'yxatidagi qiymatlar qancha bo'lsa, shuncha takrorlanadi va har bir takrorlashda hisoblagich o'zgaruvchisi (bu erda u var deb ataladi, lekin, albatta,). uni xohlaganingizcha chaqirishingiz mumkin) ro'yxatning keyingi elementining qiymatiga ega.
Agar do kalit so'zi for so'zi bilan bir qatorda bo'lsa, argumentlar ro'yxatidan keyin (do dan oldin) nuqta-vergul qo'yish kerak.
Elementlarning har biri<список>bir nechta argumentlarni o'z ichiga olishi mumkin. Bu parametrlar guruhlarini qayta ishlashda foydalidir. Bunday holda, argumentlarning har birini tahlil qilishga majburlash<списке>, siz o'rnatilgan yo'riqnomadan foydalanishingiz kerak
Siz o'zgaruvchidan for tsiklida ro'yxat sifatida foydalanishingiz mumkin.
IN<списке>For tsikli fayl nomlaridan foydalanishi mumkin, ular o'z navbatida joker belgilarni o'z ichiga olishi mumkin. Bu ko'p sonli fayllar bilan ishlashda juda foydali bo'lishi mumkin.
Agar<список>for tsiklida ko'rsatilmagan bo'lsa, u holda $@ o'zgaruvchisi ishlatiladi - buyruq qatori argumentlari ro'yxati.
Argumentlar ro'yxatini yaratishda siz for tsiklida buyruqlarni almashtirishdan foydalanishingiz mumkin.
Loopning chiqishi stdout'dan faylga yoki boshqa joyga yo'naltirilishi mumkin (bu haqida ko'proq I/U qayta yo'naltirishni ko'rib chiqish orqali bilib olishingiz mumkin).
Sintaksis:
uchun var in<список>
qil
<выполняемые команды>
bajarildi
Misol:
nomdagi nomlar uchun1 nom2 nom3 nom4
qil
echo $nomlari
bajarildi
Loop operatori uchun boshqa yozish usuli bor - C tilidagi for operatorining sintaksisiga juda o'xshash, bu holda hisoblagichlarni ishga tushirishda o'zgaruvchilar yoki bitta o'zgaruvchining boshlang'ich qiymatlari o'rnatiladi va tsiklning har bir o'tishidan keyin shart. tekshiriladi, agar tekshirish rost bo'lsa, tsiklning keyingi o'tishi boshlanadi. Blokda<приращение счётчиков>o'zgaruvchi hisoblagichlarimizning qiymati shartli ravishda o'zgarishi kerak (yuqoriga qarab emas), shuning uchun shartni tekshirganda, ertami-kechmi biz "false" qiymatini olamiz, aks holda tsikl hech qachon tugamaydi. Har qanday operatsiyani ma'lum bir necha marta takrorlash kerak bo'lsa, juda qulay va eng muhimi tanish variant.
Shunga o'xshash sintaksis bilan:
uchun ((<инициализация счётчиков>; <проверка условия>; <приращение счётчиков>))
qil
<выполняемые команды>
bajarildi
Misol:
uchun ((var=1; var<= LIMIT ; var++))
qil
echo $var
bajarildi
Bu operator orqasidagi holatni tekshiradigan juda oddiy qurilish esa va agar bu shart rost bo'lsa, u do va done so'zlari o'rtasida joylashgan buyruqlar blokini bajaradi va keyin yana shartni tekshirishga o'tadi. Agar tekshirish noto'g'ri bo'lsa, tsikl tugaydi va quyidagi buyruqlar bajarila boshlaydi: bajarildi. Buni ta'minlash zarur<проверка условия>tsiklda ishlaydigan kodga bog'liq, aks holda, agar tekshirish natijasi o'zgarmasa, siz cheksiz tsiklga ega bo'lasiz;
Vaqt oralig'i uchun standart kiritish qurilmasi qayta yo'naltirish buyrug'i yordamida faylga yo'naltirilishi mumkin< в конце цикла.
Sintaksis:
esa<Проверка условия>
qil
<Блок команд, обязательно меняющий переменные влияющие на проверку условия>
bajarildi
Misol:
esa [ $var0 -eq 100 ]
qil
echo $var
var++
bajarildi
Operator esa bir qancha shartlarga ega bo‘lishi mumkin. Ammo ulardan faqat oxirgisi tsiklni davom ettirish imkoniyatini aniqlaydi. Bunday holda, sikl operatorining sintaksisi odatdagidan farq qiladi.
Sintaksis(Yana bir bor takror aytamanki, faqat oxirgi shart tsiklning bajarilishiga ta'sir qiladi) :
esa
<условие1>
<условие2>
<условиеN>
qil
<выполняемые команды - тело цикла>
bajarildi
Operator qadar while ga juda o'xshaydi, u shartni ham baholaydi, lekin agar hisoblash natijasi noto'g'ri bo'lsa, tsiklning tanasini bajaradi. Bu g'ayrioddiy tuyulishi mumkin, ammo tsiklning birinchi o'tishidan oldingi holatni baholamaguncha, undan keyin emas, balki while. For/in sikllarida bo'lgani kabi, do kalit so'zini tsikl deklaratsiyasi bilan bir qatorga qo'yishda siz ";" belgisini kiritishingiz kerak. qilishdan oldin.
Oldingi holatda bo'lgani kabi, shart loop tanasidagi operatsiyalarga bog'liq bo'lishi kerakligini yodda tutish kerak, aks holda bizning skriptimiz hech qachon tugamaydi.
Sintaksis:
qadar<Проверка условия>
qil
<Блок команд, обязательно меняющий переменные влияющие на проверку условия>
bajarildi
Misol:
[ $var0 -gt 100] gacha # Shart iteratsiya boshida tekshiriladi.
qil
echo $var
var--
bajarildi
Hozircha bu yetarli bo‘lsa kerak. :)
MS SQL, har qanday munosib sanoat ma'lumotlar bazasi kabi, ma'lumotlar bazasi bilan birga, davlatni orqaga qaytarish imkonini beruvchi tranzaksiya jurnallarini saqlaydi...
Ushbu ma'ruzada biz tanishishni davom ettiramiz bash. Sizga shuni eslatib o'tmoqchimanki, biz ushbu elementlarni ko'rib chiqmoqdamiz bash, bu bizga operatsion tizim skriptlarini tushunishga yordam beradi. Bunday elementlar, albatta, looplar va funktsiyalardir. Agar kimdir dasturlashni o'rgangan bo'lsa, unda bu savollarni tushunishda hech qanday qiyinchiliklar bo'lmaydi.
Velosiped uchun V bash ikki turga ega. Avval klassik versiyani ko'rib chiqaylik uchun. Umumiy ko'rinish quyidagicha:
Elementlar o'rtasida uchun Va ichida o'zgaruvchi o'rnatiladi, bu esa o'z navbatida o'rtasida ko'rsatilgan qiymatlar ketma-ketligidan qiymat oladi ichida Va qil. Orasida qil Va bajarildi o'zgaruvchi har safar qiymatini o'zgartirganda bajariladigan buyruqlar mavjud. O'zgaruvchi ketma-ketlikdan oxirgi qiymatni olganda, tsikl to'xtaydi. Ketma-ketlikdagi qiymatlar bo'shliqlar bilan ajratilgan.
Mana amaliy misol:
Qiymatlar ketma-ketligi turli yo'llar bilan belgilanishi mumkin. Aniq - yuqoridagi misolda bo'lgani kabi yoki boshqa o'zgaruvchilardan foydalanish yoki maxsus buyruqlar yordamida. Keling, ba'zi misollarni ko'rib chiqaylik. Qiymatlar bo'shliqlar bilan ajratilganligi sababli, bunday qiymatlar bo'sh joyli qatorni o'z ichiga olgan har qanday o'zgaruvchi bo'lishi mumkin:
Natija birinchi misoldagi kabi bo'ladi.
Agar siz raqamlar ketma-ketligini ko'rsatishingiz kerak bo'lsa, buyruqdan foydalanishingiz mumkin seq va almashtirish mexanizmi. Jamoa seq ekranga raqamli qiymatlar ketma-ketligini qaytaradi. Sintaksis oddiy va quyidagi misoldan aniq bo'ladi:
Natija:
Keling, ikkinchi turga qaytaylik uchun. Ko'pincha skriptlarda siz C-ga o'xshash variantni topishingiz mumkin uchun, bu raqamga asoslangan tsikllar uchun ishlatiladi. Keling, bir misolni ko'rib chiqaylik:
Ifodada tekshirilayotgan shart rost ekan, tsikl ishlaydi. Ifoda noto'g'ri qaytarilishi bilan, tsiklning bajarilishi to'xtaydi.
Amaliy misol:
#!/bin/bash
i=1
esa [ $i -lt 7 ]
qil
echo $i
i=i+1 bo'lsin
bajarildi
Bizning misolimizda biz o'zgaruvchini tekshiramiz i(-lt) 7 raqamidan kichik va agar shunday bo'lsa, ekranda o'zgaruvchining qiymati ko'rsatiladi. Ifoda i=i+1 bo'lsin, o'zgaruvchini bittaga oshiradi, yana tekshiradi va hokazo. let tarjimonga argumentlar raqamli qiymatlar sifatida tan olinishi kerakligini aytadi. Bu qatorni shunday yozish mumkin qilaylik ++(c-ga o'xshash variant). Agar raqam birdan ortiq ortsa, u quyidagicha yozilishi mumkin: i+=2 bo‘lsin- Ushbu holatda i 2 ga oshib boradi. O'zgaruvchini oshirishning yana bir varianti o'rnatilgan kalkulyatordan foydalanishdir (faqat butun sonlar bilan ishlaydi). Kalkulyatorga ikkita qavs orqali kirish mumkin: i=$(($i+1)) yoki kvadratlar orqali: i=$[$i+1] Kalkulyatordan buyruq satrida ham foydalanishingiz mumkin:
Cheksiz pastadir bilan tugamaslik uchun siz looplar bilan ehtiyot bo'lishingiz kerak. Aytgancha, disk raskadrovka uchun bash birinchi qatorni o'zgartirishingiz mumkin bo'lgan skriptlar #!/bin/bash -x yoki buyruq bilan skriptni ishga tushiring bash -x:
igor@ubuntu:~/linux$ bash -x ./testfor.sh
+ i=1
+ ‘[‘ 1 -gt 5 ‘]’
+ echo i=1
i=1
+ i=i+1 bo‘lsin
+ ‘[‘ 2 -gt 5 ‘]’
+ echo i=2
i=2
+ i=i+1 bo‘lsin
+ ‘[‘ 3 -gt 5 ‘]’
+ echo i=3
i=3
+ i=i+1 bo‘lsin
+ ‘[‘ 4 -gt 5 ‘]’
+ echo i=4
i=4
+ i=i+1 bo‘lsin
+ ‘[‘ 5 -gt 5 ‘]’
+ echo i=5
i=5
+ i=i+1 bo‘lsin
+ ‘[‘ 6 -gt 5 ‘]’
Looplar qanday ishlashini tushunishingizni mustahkamlash uchun kichik skriptlarni yozishni mashq qiling bash.
Funktsiyalar ichida qo'llaniladi bash juda keng. Funktsiyalar ikki shaklda tavsiflanadi: kalit so'z bilan funktsiyasi, va usiz.
Birinchi usul:
funktsiya funksiya_nomi
{
funktsiya tanasi
}
Ikkinchi usul:
function_name()
{
funktsiya tanasi
}
Funktsiya skriptning istalgan joyida nom bilan chaqiriladi, lekin faqat funksiyaning o'zini tavsiflagandan keyin. Funktsiyalar funksiya chaqiruvidan (nomi) keyin bo'sh joy bilan ajratilgan parametrlarni ham o'tkazish mumkin. Keling, misol skriptini ko'rib chiqaylik bash:
#!/bin/bash
funktsiya primeri
{
agar [ $# -ne 0 ]
keyin
mahalliy a=1
echo "O'tkazilgan parametrlar soni - $#"
men uchun $@
qil
echo "$a-inchi parametr $i"
++ bo'lsin
bajarildi
0 qaytaring
boshqa
echo "Parametrlar o'tkazilmadi"
qaytish 1
fi
}
echo "Parametrli funktsiyani chaqirish:"
primer a b c
echo $?
echo "Funksiyani parametrsiz chaqirish:"
primer
echo $?
Ushbu misolda funksiya nomli primer. Parametrlar bilan funktsiyani chaqirish: primer a b c va parametrlarsiz: primer. Funktsiyaning tanasida barcha konstruktsiyalar sizga tanish bo'lishi kerak, bundan mustasno $# , $i Va $@ .$# — funksiyaga berilgan parametrlar sonini qaytaradi. Bizning misolimizda bu raqam bo'ladi 3 .$@ barcha parametrlarni bitta satrda qaytaradi. Misolda shunday bo'ladi a b c. Va orqali $1 , $2 , $3 va hokazo. Har bir parametrga alohida kirishingiz mumkin. $? — oxirgi buyruqning bajarilish kodini o'z ichiga oladi. Bizning misolimizda funktsiyani bajarish kodi.
Funktsiya raqamli qiymatni kalit so'z orqali ham qaytarishi mumkin qaytish. Odatda, agar funktsiya xatosiz bajarilgan bo'lsa, ular 0 ni yoki biror narsa noto'g'ri bo'lsa, nolga teng bo'lmagan qiymatni qaytaradi. Misolda, agar funksiya parametrlar bilan chaqirilsa, 0 qiymati, agar funksiya parametrlarsiz chaqirilgan bo'lsa, 1 kodi qaytariladi.
Funktsiyaga parametrlarni o'tkazish bilan bog'liq hamma narsa skript uchun xuddi shunday ishlaydi. Shuningdek, siz parametrlarni skriptga o'tkazishingiz va ularni xuddi shu tarzda boshqarishingiz mumkin $#, $@, $N. Xuddi shu toifadagi variant - $0 - bu skriptni ishga tushirgan buyruq nomini qaytaradi. Agar skript buyruq bilan bajarilgan bo'lsa ./script.sh, keyin aks-sado $0 qiymatni qaytaradi ./script.sh, va agar buyruq bo'lsa /home/igor/linux/script.sh, keyin qiymat qaytariladi /home/igor/linux/script.sh.