ວິທີການໃຊ້ 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 ແລະປະຕິບັດຕາມຂັ້ນຕອນດັ່ງຕໍ່ໄປນີ້:
- ໃສ່ mkdir scripts ( ຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບ mkdir ນີ້ )
- ກະລຸນາໃສ່ cd scripts (ນີ້ຈະ ປ່ຽນລະບົບ ໄປຍັງ scripts )
- ກະລຸນາໃສ່ nano examplen.sh (ບ່ອນທີ່ n ແມ່ນຕົວຢ່າງທີ່ທ່ານກໍາລັງເຮັດວຽກຢູ່)
- ກະລຸນາໃສ່ script
- ກົດ CTRL + O ເພື່ອບັນທຶກແລະ CTRL + X ເພື່ອອອກ
- 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
- 2
- 3
- 4
- 5
ວິທີການຂື້ນລະຫວ່າງຈຸດເລີ່ມຕົ້ນແລະຈຸດສິ້ນສຸດ
ບັນຫາທີ່ມີຕົວຢ່າງຂ້າງເທິງນີ້ແມ່ນວ່າຖ້າທ່ານຕ້ອງການບັນຊີລາຍຊື່ໃຫຍ່ກວ່າ (ບອກ 1 ຫາ 500), ມັນຈະໃຊ້ເວລາອາຍຸເພື່ອພິມຈໍານວນທັງຫມົດໃນສະຖານທີ່ທໍາອິດ.
ນີ້ນໍາພວກເຮົາໄປຫາຕົວຢ່າງທີສອງເຊິ່ງສະແດງໃຫ້ເຫັນເຖິງວິທີການກໍານົດຈຸດເລີ່ມຕົ້ນແລະຈຸດສິ້ນສຸດ:
#! / bin / bash
ສໍາລັບຈໍານວນໃນ {1..10}
ເຮັດ
echo "$ number"
ເຮັດແລ້ວ
ອອກຈາກ 0
ກົດລະບຽບແມ່ນພື້ນຖານດຽວກັນ. ມູນຄ່າຫຼັງຈາກຄໍາວ່າ " ຢູ່" ເຮັດໃຫ້ລາຍະການຈະເລີນເຕີບໂຕຜ່ານແລະມູນຄ່າໃນບັນຊີແມ່ນຖືກຈັດໄວ້ໃນຕົວແປ (ຕົວເລກ), ແລະທຸກໆຄັ້ງທີ່ loop ມັນ, ບົດລາຍງານລະຫວ່າງ ເຮັດ ແລະ ເຮັດ ແມ່ນຖືກປະຕິບັດ.
ຄວາມແຕກຕ່າງຕົ້ນຕໍແມ່ນວິທີການສ້າງລາຍຊື່. ວົງວົງ curly {} ໂດຍພື້ນຖານສະແດງເຖິງລະດັບແລະລະດັບໃນກໍລະນີນີ້ແມ່ນ 1 ຫາ 10 (ຈຸດສອງຈຸດແຍກກັນແລະຈຸດຈົບຂອງຊ່ວງ).
ຕົວຢ່າງນີ້ຈຶ່ງແລ່ນຜ່ານຈໍານວນແຕ່ລະລະຫວ່າງ 1 ແລະ 10 ແລະສະແດງຜົນອອກມາໃຫ້ກັບຫນ້າຈໍດັ່ງຕໍ່ໄປນີ້:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 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) ແມ່ນຈໍານວນຂອງລາຍການໃນບັນຊີລາຍຊື່ທີ່ມັນຈະຂ້າມ.
ຕົວຢ່າງຂ້າງເທິງດັ່ງນັ້ນສະແດງຜົນຕໍ່ໄປນີ້:
- 0
- 10
- 20
- 30
- 40
- 50
- 60
- 70
- 80
- 90
- 100
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 ແລະຈະຖືກສະແດງຢູ່ໃນຫນ້າຈໍ.
ຍົກຕົວຢ່າງ:
- 5 ແມ່ນແບ່ງເປັນ 5
- 10 ແມ່ນແບ່ງເປັນ 5
- 15 ແມ່ນແບ່ງເປັນ 5
ຖ້າທ່ານຕ້ອງການປ່ຽນຂະຫນາດຂັ້ນຕອນຂອງການເລິກທ່ານສາມາດດັດແປງຫມາຍເລກ ++ ເພື່ອເປັນ ຈໍານວນ = ເລກ + 2 , ຫມາຍເລກ = ເລກ + 5 ຫຼື ເລກ = ເລກ + 10, ແລະອື່ນໆ.
ນີ້ສາມາດໄດ້ຮັບການຫຼຸດລົງອີກຕໍ່ກັບ ຫມາຍເລກ + = 2 ຫະລື ຫມາຍເລກ + = 5
ຕົວຢ່າງປະຕິບັດ
ສໍາລັບ loops ສາມາດເຮັດໄດ້ຫຼາຍກວ່າ iterate ລາຍຊື່ຂອງຈໍານວນ. ຕົວຈິງແລ້ວ, ທ່ານສາມາດນໍາໃຊ້ຜົນຂອງຄໍາສັ່ງອື່ນເປັນບັນຊີ.
ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງວິທີການແປງໄຟລ໌ສຽງຈາກ MP3 ກັບ WAV :
#! / bin / bash
ບັນຊີລາຍຊື່ໃນຕົວຢ່າງນີ້ແມ່ນທຸກໆໄຟລ໌ທີ່ມີສ່ວນຂະຫຍາຍ .MP3 ໃນໂຟເດີປັດຈຸບັນແລະຕົວແປແມ່ນ ແຟ້ມ .
ຄໍາສັ່ງ mpg ແປງໄຟລ໌ MP3 ໃນ WAV. ຢ່າງໃດກໍ່ຕາມ, ທ່ານອາດຈະຕ້ອງການຕິດຕັ້ງນີ້ໂດຍໃຊ້ຜູ້ຈັດການຊຸດຂອງທ່ານກ່ອນ.