Bash WHILE-Loops yozish qanday

Buyruqlar, sintaksis va misollar

Buyruq fayliga ularni yozib, keyin uni ishga tushirish orqali ketma-ket buyruqlarni bajarishingiz mumkin.

Skript fayli oddiygina matn fayli, odatda buyruq satridan ( qobiq ) bajarilishi mumkin bo'lgan ko'rsatmalar ketma-ketligini o'z ichiga olgan .SH fayl kengaytmasi bilan.

Loop misollari

Quyida bir muddat loop misoli keltirilgan. Ushbu skript fayli bajarilayotganda ekranda 1 dan 9 gacha raqamlarni chiqaradi. While-statement siz for-loopga nisbatan tugash holatini aniqlash uchun sizga ko'proq moslashuvchanlikni beradi.

[$ count -le 9] echimi "$ count" uyqu 1 ((count ++)) bajarilganda #! / bin / bash count = 1

Misol uchun, avvalgi skriptni "((count ++))" ketma-ketligini bekor qilib, cheksiz pastadir mumkin:

#! / bin / bash count = 1 [$ count -le 9] echo "$ count" uyqu 1 bajarildi

"Uyqu 1" so'zi har bir iteratsiya bo'yicha 1 soniya davomida bajarilishini to'xtatadi. Jarayoni tugatish uchun Ctrl + C klaviaturasidan foydalaning.

Shuningdek, shartli ravishda nuqta qo'yib, cheksiz pastadir yaratishingiz mumkin:

#! / Bin / bash count = 1 bo'lsa: echo "$ count" uyqu 1 ((count ++)) bajarildi

While-loopda bir nechta shartni ishlatish uchun ikkilik kvadrat qavs belgisidan foydalanish kerak:

[$ count -le 9] && [$ done == 0]] echish $ count = 1 = (= count = + 5) if (= count = + 5); keyin $ done = 1 fi amalga oshirildi

Ushbu skriptda "bajarilgan" o'zgarmaydigan 0 ga o'rnatiladi va keyin hisoblash 5 ga yetganda 1ga o'rnatiladi. "Loop" holati "count" to'qqizdan kam bo'lsa va while loop davom etadigan bo'lsa, "bajarilgan" teng nolga teng. Shuning uchun, raqamlar soni 5 ga teng bo'lganda o'chiriladi.

"&&" mantiqiy "va" va "|| degan ma'noni anglatadi mantiqiy "yoki" degan ma'noni anglatadi.

Ikkala kvadrat qavsli "-a" va "-o" shartlarida shartlarda "va" va "yoki" shartlari uchun muqobil yozuv. Yuqoridagi shart:

[[$ count -le 9] va & [$ done == 0]]

Quyidagi kabi qayta yozish mumkin:

[$ count -le 9] -a [$ done == 0]

Matn faylini o'qish, odatda vaqt oralig'i bilan amalga oshiriladi. Quyidagi misolda bosh skriptlari "inventory.txt:" deb nomlangan faylning satri bo'yicha tarkib satrini o'qiydi.

FILE = inventory.txt exec 6

Birinchi satr kirish fayl nomini "FILE" o'zgaruvchiga belgilaydi. Ikkinchi satr "6" fayl identifikatorida "standart kirish" ni saqlaydi (3 va 9 orasida har qanday qiymat bo'lishi mumkin). Bu "standart kirish" skript oxirida fayl identifikatori "0" ga qayta tiklanishi uchun amalga oshiriladi ("exec" ga qarang. 3-satrda kirish fayli "0" fayl identifikatoriga beriladi) standart kirish uchun "o'qish" iborasi keyin har bir iteratsiya bo'yicha fayldan bir satr o'qiydi va uni "satr1" o'zgaruvchisiga qo'yadi.

Bir vaqt oralig'idan vaqtincha chiqib ketish uchun siz quyidagi gapni ishlatishingiz mumkin:

[$ count -le 9] echimi "$ count" uyqu 1 ((count ++)) bo'lsa, [$ count == 5]

Deklaratsiya bayonoti dasturni bajarish jarayonini oxirigacha qoldirib, keyinchalik barcha amallarni bajaradi. Bunday holda, "echo tugadi" iborasi.

Davom etish bayonoti, boshqa tomondan, mavjud iteratsiya vaqtining qolgan qismini ifodalaydi va bevosita keyingi iteriyaga o'tadi:

[$ count -le 9] 1 sonini (= count ++) = [$ count == 5] bo'lsa, $ count = 1 amalga oshiriladi = echo tugagan

Bu holda, "davom" iborasi o'zgarmaydigan "count" 5 ga yetganda amalga oshiriladi. Bu degani ("count" ning qiymati 5 bo'lsa) bu keyingi sonda (echo "$ count") keyingi ijrosi bajarilmasligini anglatadi.