ວິທີການຂຽນ Bash WHILE-Loops

ຄໍາສັ່ງ, ຄໍາສັບແລະຕົວຢ່າງ

ທ່ານສາມາດດໍາເນີນການລໍາດັບຄໍາສັ່ງໂດຍການຂຽນເຂົ້າໄປໃນໄຟລ໌ script ແລະຫຼັງຈາກນັ້ນເຮັດວຽກໄດ້.

ໄຟລ໌ script ແມ່ນພຽງແຕ່ໄຟລ໌ຂໍ້ຄວາມ, ໂດຍປົກກະຕິມີການຂະຫຍາຍໄຟລ໌ .SH, ເຊິ່ງປະກອບດ້ວຍລໍາດັບຄໍາແນະນໍາທີ່ສາມາດຖືກປະຕິບັດຈາກເສັ້ນຄໍາສັ່ງ ( shell ).

ໃນຂະນະທີ່ຕົວຢ່າງຂອງ Loop

ຕໍ່ໄປນີ້ແມ່ນຕົວຢ່າງຂອງຊ່ວງເວລາຫນຶ່ງ. ເມື່ອປະຕິບັດງານ, ໄຟລ໌ສະຄິບນີ້ຈະພິມຕົວເລກ 1 ເຖິງ 9 ໃນຫນ້າຈໍ. ໃນຂະນະທີ່ຄໍາຖະແຫຼງທີ່ເຮັດໃຫ້ທ່ານມີຄວາມຍືດຫຍຸ່ນຫຼາຍຂຶ້ນສໍາລັບການກໍານົດເງື່ອນໄຂການລົ້ມລະລາຍກ່ວາ ສໍາລັບວົງຈອນ .

#! / bin / bash count = 1 ໃນຂະນະທີ່ [$ count -le 9] ເຮັດ echo "count count" ນອນ 1 ((count ++) ແລ້ວ

ຕົວຢ່າງ: ທ່ານສາມາດເຮັດໃຫ້ສະຄິບກ່ອນຫນ້ານີ້ເປັນວົງຈອນທີ່ບໍ່ມີຂອບເຂດໂດຍການຍົກເລີກຄໍາສັ່ງ increment "((count ++))":

#! / bin / bash count = 1 while [$ count -le 9] echo "count count" sleep 1 done

ຄໍາສັ່ງ "ນອນ 1" ຢຸດການປະຕິບັດສໍາລັບ 1 ວິນາທີໃນແຕ່ລະເທື່ອ. ໃຊ້ ແປ້ນພິມແປ້ນ Ctrl + C ເພື່ອຢຸດການຂະບວນການ.

ນອກນັ້ນທ່ານຍັງສາມາດສ້າງຂອບເຂດທີ່ບໍ່ມີຂອບເຂດໂດຍການວາງເງີນເປັນເງື່ອນໄຂ:

#! / bin / bash count = 1 while: echo "count count" sleep 1 ((count ++)) done

ໃນຄໍາສັ່ງທີ່ຈະນໍາໃຊ້ເງື່ອນໄຂຫຼາຍໃນຂະນະທີ່ຂັດຂວາງ, ທ່ານຕ້ອງໃຊ້ວົງເລັບສີ່ຫລ່ຽມ double square:

count = 1 done = 0 while [[$ count -le 9] && [$ done == 0]] echo "count count" sleep 1 ((count ++)) if [$ count == 5] ແລ້ວ $ done = 1 fi ແລ້ວ

ໃນສະຄິບນີ້, ຕົວແປ "ເຮັດ" ຖືກເລີ່ມຕົ້ນເປັນ 0 ແລະຫຼັງຈາກນັ້ນກໍານົດໃຫ້ 1 ໃນເວລາທີ່ຈໍານວນຮອດ 5. ເງື່ອນໄຂຂອງວົງຈອນກ່າວວ່າຊ່ວງຂະນະທີ່ຈະສືບຕໍ່ເປັນ "ນັບ" ແມ່ນຫນ້ອຍກວ່າເກົ້າແລະ "ເຮັດ" ເທົ່າກັບ to zero ດັ່ງນັ້ນ loops ອອກຈາກເວລາທີ່ນັບມີເທົ່າກັບ 5.

"&&" ຫມາຍຄວາມວ່າຢ່າງມີເຫດຜົນ "ແລະ" ແລະ "||" ຫມາຍຄວາມວ່າມີເຫດຜົນ "ຫຼື".

ການສັງເກດທາງເລືອກສໍາລັບການເຊື່ອມຕໍ່ "ແລະ" ແລະ "ຫຼື" ໃນເງື່ອນໄຂແມ່ນ "-a" ແລະ "-o" ທີ່ມີວົງເລັບດຽວ. ເງື່ອນໄຂຂ້າງເທິງນີ້:

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

... ສາມາດໄດ້ຮັບການຂຽນໃຫມ່ເປັນ:

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

ການອ່ານໄຟລ໌ຂໍ້ຄວາມແມ່ນເຮັດໂດຍປົກກະຕິກັບຂະຫນານ ໃນຕົວຢ່າງຕໍ່ໄປນີ້, ສະຄິບ bash ອ່ານຂໍ້ມູນບັນທັດໂດຍເສັ້ນຂອງໄຟລ໌ທີ່ເອີ້ນວ່າ "inventory.txt:"

FILE = inventorytxt exec 6

ເສັ້ນທໍາອິດມອບຊື່ໄຟລ໌ເຂົ້າໃສ່ກັບຕົວແປ "FILE". ເສັ້ນທີສອງຊ່ວຍປະຢັດ "ການປ້ອນຂໍ້ມູນມາດຕະຖານ" ໃນລາຍລະອຽດຂອງໄຟລ໌ "6" (ມັນອາດຈະມີມູນຄ່າລະຫວ່າງ 3 ຫາ 9). ນີ້ແມ່ນເຮັດເພື່ອວ່າ "ມາດຕະຖານການປ້ອນຂໍ້ມູນ" ສາມາດຖືກຟື້ນຟູຄືນໃຫມ່ເພື່ອບັນທຶກຄໍາອະທິບາຍ "0" ໃນຕອນທ້າຍຂອງສະຄິບ (ເບິ່ງຄໍາເຫັນ "exec 0 ໃນແຖວທີ 3, ໄຟລ໌ປະກອບໄດ້ຖືກມອບໃຫ້" 0 " ສໍາລັບການປ້ອນຂໍ້ມູນມາດຕະຖານຄໍາສັ່ງ "read" ແລ້ວອ່ານເສັ້ນຈາກໄຟລ໌ໃນແຕ່ລະ iteration ແລະມອບໃຫ້ variable "line1".

ໃນຄໍາສັ່ງເພື່ອອອກກໍາລັງກາຍກ່ອນໄວອັນຄວນ, ທ່ານສາມາດໃຊ້ຄໍາເວົ້າທີ່ແຕກຕ່າງເຊັ່ນນີ້:

count = 1 done = 0 while [$ count -le 9] echo "count count" sleep 1 ((count ++)) if [count count == 5] then break fi done echo Finished

ຄໍາຖະແຫຼງການຢຸດພັກຜ່ອນການປະຕິບັດງານຂອງໂຄງການໃນຕອນທ້າຍໃນຂະນະທີ່ຂື້ນແລະປະຕິບັດຄໍາສັ່ງໃດໆຕາມມັນ. ໃນກໍລະນີນີ້, ຄໍາສັ່ງ "echo ສໍາເລັດ."

ໃນຂະນະດຽວກັນ, ຄໍາຖະແຫຼງຕໍ່ການສືບຕໍ່, ແຕ່ວ່າ, ຂ້າມພຽງແຕ່ສ່ວນທີ່ເຫຼືອໃນຂະນະທີ່ການປະຕິບັດໃນໄລຍະຂອງການເລີ້ມປະຈຸບັນແລະໄປໂດຍກົງກັບການຕໍ່ໄປຕໍ່ໄປ:

ນັບ = 1 ເຮັດ = 0 ໃນຂະນະທີ່ [$ count -le 9] ເຮັດການນອນ 1 ((count ++)) ຖ້າ [$ count == 5] ຫຼັງຈາກນັ້ນໃຫ້ສືບຕໍ່ຈືຂໍ້ມູນການ "count count"

ໃນກໍລະນີນີ້, ຄໍາສັ່ງ "ສືບຕໍ່" ຈະຖືກປະຕິບັດເມື່ອມີຕົວແປ "count" ເຖິງ 5. ນີ້ຫມາຍຄວາມວ່າຄໍາສັ່ງຕໍ່ໄປນີ້ (echo "$ count") ບໍ່ໄດ້ຖືກປະຕິບັດໃນການເລັມນີ້ (ເມື່ອຄ່າຂອງ "count" ແມ່ນ 5).