ວິທີການຂຽນ BASH "ສໍາລັບ" Loop

ວິທີການໃຊ້ BASH "ສໍາລັບ" loop ໃນ scripts shell

BASH (ເຊິ່ງຫມາຍເຖິງ Bourne Again Shell) ແມ່ນພາສາ scripting ທີ່ນໍາໃຊ້ໂດຍລະບົບປະຕິບັດການ Linux ແລະ UNIX ທີ່ສຸດ.

ທ່ານສາມາດເອີ້ນໃຊ້ຄໍາສັ່ງ BASH ຢູ່ໃນປ່ອງຢ້ຽມຂອງ terminal ຫນຶ່ງຫຼັງຈາກທີ່ອື່ນຫຼືທ່ານສາມາດເພີ່ມຄໍາສັ່ງໄປຍັງແຟ້ມຂໍ້ຄວາມເພື່ອສ້າງ script shell.

ສິ່ງທີ່ຍິ່ງໃຫຍ່ກ່ຽວກັບການຂຽນອັກສອນແກະສະຫຼັກແມ່ນວ່າທ່ານສາມາດດໍາເນີນການໃຫ້ພວກເຂົາອີກເທື່ອຫນຶ່ງແລະອີກຄັ້ງ. ຕົວຢ່າງຈິນຕະນາການທີ່ທ່ານຕ້ອງການເພີ່ມຜູ້ໃຊ້ເຂົ້າໃນລະບົບ, ກໍານົດສິດຂອງເຂົາເຈົ້າແລະຈັດການສະພາບແວດລ້ອມທີ່ເລີ່ມຕົ້ນຂອງພວກເຂົາ. ທ່ານສາມາດຂຽນລົງຄໍາສັ່ງກ່ຽວກັບເຈ້ຍຂອງເຈ້ຍແລະດໍາເນີນການໃຫ້ພວກເຂົາເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃຫມ່ຫຼືທ່ານສາມາດຂຽນສະຄິບດຽວແລະພຽງແຕ່ສົ່ງຂໍ້ມູນເຂົ້າໄປໃນຕົວອັກສອນນັ້ນ.

ພາສາສະແປມເຊັ່ນ: BASH ມີການສ້າງໂຄງການທີ່ຄ້າຍຄືກັນກັບພາສາອື່ນໆ. ຕົວຢ່າງ, ທ່ານສາມາດນໍາໃຊ້ຕົວກໍານົດການນໍາເຂົ້າເພື່ອ ໃຫ້ໄດ້ຮັບຂໍ້ມູນຈາກແປ້ນພິມ ແລະເກັບໄວ້ເປັນຕົວແປ. ຫຼັງຈາກນັ້ນທ່ານສາມາດໄດ້ຮັບສະຄິບເພື່ອ ປະຕິບັດການປະຕິບັດທີ່ແນ່ນອນໂດຍອີງໃສ່ມູນຄ່າຂອງຕົວກໍານົດການປ້ອນຂໍ້ມູນ .

ສ່ວນຫນຶ່ງທີ່ສໍາຄັນຂອງການຂຽນໂປລແກລມແລະພາສາສະຄິບແມ່ນຄວາມສາມາດທີ່ຈະດໍາເນີນການລະຫັດດຽວກັນອີກຄັ້ງ.

ມີຈໍານວນວິທີທີ່ຈະເຮັດຊ້ໍາລະຫັດ (ຍັງເອີ້ນວ່າ loops). ໃນຄູ່ມືນີ້, ທ່ານຈະໄດ້ສະແດງວິທີການຂຽນ "ສໍາລັບ" loop.

A for loop repeats ສ່ວນໃດຫນຶ່ງຂອງລະຫັດຜ່ານແລະຫຼາຍກວ່າ. ພວກເຂົາກໍາລັງເປັນປະໂຫຍດດັ່ງນັ້ນຊຸດຄໍາສັ່ງສາມາດຮັກສາຈົນກວ່າຈະມີເງື່ອນໄຂສະເພາະ, ຫຼັງຈາກນັ້ນພວກເຂົາຈະຢຸດເຊົາ.

ໃນຄູ່ມືນີ້, ທ່ານຈະໄດ້ສະແດງໃຫ້ເຫັນຫ້າວິທີທີ່ຈະນໍາໃຊ້ສໍາລັບຮອບໃນສະຄິບ BASH.

ກ່ອນທີ່ຈະເລີ່ມຕົ້ນ

ກ່ອນທີ່ທ່ານຈະເລີ່ມຕົ້ນດ້ວຍຕົວຢ່າງສໍາລັບ loop, ທ່ານຈໍາເປັນຕ້ອງເປີດ window terminal ແລະປະຕິບັດຕາມຂັ້ນຕອນດັ່ງຕໍ່ໄປນີ້:

  1. ໃສ່ mkdir scripts ( ຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບ mkdir ນີ້ )
  2. ກະລຸນາໃສ່ cd scripts (ນີ້ຈະ ປ່ຽນລະບົບ ໄປຍັງ scripts )
  3. ກະລຸນາໃສ່ nano examplen.sh (ບ່ອນທີ່ n ແມ່ນຕົວຢ່າງທີ່ທ່ານກໍາລັງເຮັດວຽກຢູ່)
  4. ກະລຸນາໃສ່ script
  5. ກົດ CTRL + O ເພື່ອບັນທຶກແລະ CTRL + X ເພື່ອອອກ
  6. Run bash examplen.sh (ອີກເທື່ອຫນຶ່ງ, ມີ n ເປັນຕົວຢ່າງທີ່ທ່ານກໍາລັງເຮັດວຽກຮ່ວມກັບ)

ວິທີການຂື້ນຜ່ານບັນຊີລາຍຊື່

#! / bin / bash
ສໍາລັບຈໍານວນໃນ 1 2 3 4 5
ເຮັດ
echo $ number
ເຮັດແລ້ວ
ອອກຈາກ 0

ວິທີການ BASH ຂອງການນໍາໃຊ້ "ສໍາລັບ" loops ແມ່ນບາງຢ່າງທີ່ແຕກຕ່າງກັນກັບວິທີທີ່ຫຼາຍທີ່ສຸດການຂຽນໂປລແກລມແລະພາສາສະຄິບຈັດການ "ສໍາລັບ" loops. ໃຫ້ທໍາລາຍ script ລົງ ...

ໃນ BASH "ສໍາລັບ" loop ທັງຫມົດ, ລາຍງານລະຫວ່າງ ເຮັດ ແລະ ເຮັດໄດ້ ຖືກປະຕິບັດຄັ້ງຫນຶ່ງສໍາລັບທຸກໆລາຍໃນລາຍການ.

ໃນຕົວຢ່າງຂ້າງເທິງ, ບັນຊີລາຍຊື່ແມ່ນທຸກສິ່ງທຸກຢ່າງທີ່ມາຫຼັງຈາກຄໍາ ໃນ (ie 1 2 3 4 5).

ແຕ່ລະຄັ້ງທີ່ loop ມັນ iterates, ມູນຄ່າຕໍ່ໄປໃນບັນຊີແມ່ນ inserted ເຂົ້າໃນຕົວແປທີ່ກໍານົດຫຼັງຈາກຄໍາວ່າ "ສໍາລັບ" . ໃນວົງການຂ້າງເທິງ, ຕົວແປແມ່ນເອີ້ນວ່າ ເລກ .

ຄໍາສັ່ງ echo ຖືກນໍາໃຊ້ເພື່ອສະແດງຂໍ້ມູນກ່ຽວກັບຫນ້າຈໍ.

ດັ່ງນັ້ນ, ຕົວຢ່າງນີ້ໃຊ້ເວລາຈໍານວນ 1 ຫາ 5 ແລະສົ່ງໃຫ້ພວກເຂົາຫນຶ່ງຄົນຫນຶ່ງໄປຫາຫນ້າຈໍ:

ວິທີການຂື້ນລະຫວ່າງຈຸດເລີ່ມຕົ້ນແລະຈຸດສິ້ນສຸດ

ບັນຫາທີ່ມີຕົວຢ່າງຂ້າງເທິງນີ້ແມ່ນວ່າຖ້າທ່ານຕ້ອງການບັນຊີລາຍຊື່ໃຫຍ່ກວ່າ (ບອກ 1 ຫາ 500), ມັນຈະໃຊ້ເວລາອາຍຸເພື່ອພິມຈໍານວນທັງຫມົດໃນສະຖານທີ່ທໍາອິດ.

ນີ້ນໍາພວກເຮົາໄປຫາຕົວຢ່າງທີສອງເຊິ່ງສະແດງໃຫ້ເຫັນເຖິງວິທີການກໍານົດຈຸດເລີ່ມຕົ້ນແລະຈຸດສິ້ນສຸດ:

#! / bin / bash
ສໍາລັບຈໍານວນໃນ {1..10}
ເຮັດ
echo "$ number"
ເຮັດແລ້ວ
ອອກຈາກ 0

ກົດລະບຽບແມ່ນພື້ນຖານດຽວກັນ. ມູນຄ່າຫຼັງຈາກຄໍາວ່າ " ຢູ່" ເຮັດໃຫ້ລາຍະການຈະເລີນເຕີບໂຕຜ່ານແລະມູນຄ່າໃນບັນຊີແມ່ນຖືກຈັດໄວ້ໃນຕົວແປ (ຕົວເລກ), ແລະທຸກໆຄັ້ງທີ່ loop ມັນ, ບົດລາຍງານລະຫວ່າງ ເຮັດ ແລະ ເຮັດ ແມ່ນຖືກປະຕິບັດ.

ຄວາມແຕກຕ່າງຕົ້ນຕໍແມ່ນວິທີການສ້າງລາຍຊື່. ວົງວົງ curly {} ໂດຍພື້ນຖານສະແດງເຖິງລະດັບແລະລະດັບໃນກໍລະນີນີ້ແມ່ນ 1 ຫາ 10 (ຈຸດສອງຈຸດແຍກກັນແລະຈຸດຈົບຂອງຊ່ວງ).

ຕົວຢ່າງນີ້ຈຶ່ງແລ່ນຜ່ານຈໍານວນແຕ່ລະລະຫວ່າງ 1 ແລະ 10 ແລະສະແດງຜົນອອກມາໃຫ້ກັບຫນ້າຈໍດັ່ງຕໍ່ໄປນີ້:

ວົງດຽວກັນອາດໄດ້ຮັບການຂຽນເຊັ່ນນີ້, ດ້ວຍ syntax ທີ່ຄ້າຍກັບຕົວຢ່າງທໍາອິດ:

ສໍາລັບຈໍານວນໃນ 1 2 3 4 5 6 7 8 9 10

ວິທີການຍົກຕົວເລກຢູ່ໃນລະດັບໃດຫນຶ່ງ

ຕົວຢ່າງທີ່ຜ່ານມາສະແດງໃຫ້ເຫັນວ່າວິທີການຂື້ນລະຫວ່າງຈຸດເລີ່ມຕົ້ນແລະຈຸດສິ້ນສຸດ, ດັ່ງນັ້ນຕອນນີ້ພວກເຮົາຈະເບິ່ງວິທີການຂ້າມຈໍານວນໃນລະດັບ.

ຈິນຕະນາການວ່າທ່ານຕ້ອງການຂີ່ລະຫວ່າງ 0 ຫາ 100 ແຕ່ຈະສະແດງຈໍານວນສິບເທົ່າ. ສະຄິບຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວ່າຄວນເຮັດແນວໃດ:

#! / bin / bash
ສໍາລັບຈໍານວນໃນ {0,10010}
ເຮັດ
echo "$ number"
ເຮັດແລ້ວ
ອອກຈາກ 0

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

ຈໍານວນທໍາອິດແມ່ນ 0 ແລະຫມາຍເລກທ້າຍແມ່ນ 100. ຈໍານວນທີສາມ (10) ແມ່ນຈໍານວນຂອງລາຍການໃນບັນຊີລາຍຊື່ທີ່ມັນຈະຂ້າມ.

ຕົວຢ່າງຂ້າງເທິງດັ່ງນັ້ນສະແດງຜົນຕໍ່ໄປນີ້:

A More Traditional Looking For Loop

ວິທີການຂຽນ BASH ສໍາລັບວົງແມ່ນເລັກນ້ອຍເມື່ອທຽບໃສ່ກັບພາສາການຂຽນອື່ນໆ.

ແຕ່ທ່ານສາມາດຂຽນແບບສໍາຫຼັບ loop ໃນແບບທີ່ຄ້າຍຄືກັນກັບພາສາການຂຽນໂປລແກລມ C ເຊັ່ນ:

#! / bin / bash
ສໍາລັບ ((number = 1 number <100 number ++))
{
ຖ້າ (($ number% 5 == 0))
ຫຼັງຈາກນັ້ນ,
echo "$ number is divisible by 5"
fi
}
ອອກຈາກ 0

loop ເລີ່ມຕົ້ນໂດຍການກໍານົດຈໍານວນຕົວປ່ຽນເປັນ 1 (ຫມາຍເລກ = 1 ). loop ຈະຮັກສາ iterating ໃນຂະນະທີ່ມູນຄ່າຂອງຈໍານວນແມ່ນນ້ອຍກວ່າ 100 ( ຫມາຍເລກ <100 ). ມູນຄ່າຂອງການປ່ຽນແປງ ຈໍານວນ ໂດຍການເພີ່ມ 1 ກັບມັນຫຼັງຈາກທີ່ມັນເທື່ອ ( ຫມາຍເລກ ++ ).

ທຸກສິ່ງທຸກຢ່າງລະຫວ່າງ bracket curly ແມ່ນປະຕິບັດໂດຍຜ່ານ iteration ຂອງ loop ແຕ່ລະຄົນ.

ບິດລະຫວ່າງບິດກວດສອບມູນຄ່າຂອງ ຈໍານວນຫນຶ່ງ , ແບ່ງມັນໂດຍ 5, ແລະປຽບທຽບສ່ວນທີ່ເຫລືອກັບ 0. ຖ້າສ່ວນທີ່ເຫຼືອແມ່ນ 0, ຫຼັງຈາກນັ້ນຈໍານວນຈະແບ່ງເປັນ 5 ແລະຈະຖືກສະແດງຢູ່ໃນຫນ້າຈໍ.

ຍົກ​ຕົວ​ຢ່າງ:

ຖ້າທ່ານຕ້ອງການປ່ຽນຂະຫນາດຂັ້ນຕອນຂອງການເລິກທ່ານສາມາດດັດແປງຫມາຍເລກ ++ ເພື່ອເປັນ ຈໍານວນ = ເລກ + 2 , ຫມາຍເລກ = ເລກ + 5 ຫຼື ເລກ = ເລກ + 10, ແລະອື່ນໆ.

ນີ້ສາມາດໄດ້ຮັບການຫຼຸດລົງອີກຕໍ່ກັບ ຫມາຍເລກ + = 2 ຫະລື ຫມາຍເລກ + = 5

ຕົວຢ່າງປະຕິບັດ

ສໍາລັບ loops ສາມາດເຮັດໄດ້ຫຼາຍກວ່າ iterate ລາຍຊື່ຂອງຈໍານວນ. ຕົວຈິງແລ້ວ, ທ່ານສາມາດນໍາໃຊ້ຜົນຂອງຄໍາສັ່ງອື່ນເປັນບັນຊີ.

ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງວິທີການແປງໄຟລ໌ສຽງຈາກ MP3 ກັບ WAV :

#! / bin / bash

ບັນຊີລາຍຊື່ໃນຕົວຢ່າງນີ້ແມ່ນທຸກໆໄຟລ໌ທີ່ມີສ່ວນຂະຫຍາຍ .MP3 ໃນໂຟເດີປັດຈຸບັນແລະຕົວແປແມ່ນ ແຟ້ມ .

ຄໍາສັ່ງ mpg ແປງໄຟລ໌ MP3 ໃນ WAV. ຢ່າງໃດກໍ່ຕາມ, ທ່ານອາດຈະຕ້ອງການຕິດຕັ້ງນີ້ໂດຍໃຊ້ຜູ້ຈັດການຊຸດຂອງທ່ານກ່ອນ.