ຄູ່ມືເລີ່ມຕົ້ນເພື່ອ BASH - Parameters Input

ຍິນດີຕ້ອນຮັບສູ່ພາກ 2 ຂອງ Beginners Guide ເພື່ອ BASH series ເຊິ່ງເປັນເອກະລັກໃນການເປັນ BASH ພຽງແຕ່ການສອນຂຽນໂດຍຜູ້ເລີ່ມຕົ້ນສໍາລັບຜູ້ເລີ່ມ.

ຜູ້ອ່ານຂອງຄູ່ມືນີ້ຈະສ້າງຄວາມຮູ້ຂອງພວກເຂົາໃນຂະນະທີ່ຂ້ອຍສ້າງຄວາມຮູ້ຂອງຂ້ອຍແລະຫວັງວ່າໃນທ້າຍຂອງມັນທັງຫມົດພວກເຮົາຈະສາມາດຂຽນບາງສະຄິບທີ່ຖືກຕ້ອງດີ.

ອາທິດທີ່ຜ່ານມາຂ້າພະເຈົ້າໄດ້ກວມເອົາ ການສ້າງ script ທໍາອິດຂອງທ່ານ ທີ່ສະແດງຄໍາວ່າ Hello World. ມັນກວມເອົາຫົວຂໍ້ຕ່າງໆເຊັ່ນວ່າບັນນາທິການບົດຄວາມ, ວິທີເປີດ window window, ບ່ອນທີ່ສະແດງ scripts ຂອງທ່ານ, ວິທີການສະແດງຄໍາວ່າ "Hello World" ແລະຈຸດທີ່ດີກວ່າໃນລັກສະນະ escape ເຊັ່ນ quote ("").

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

ພາລາມິເຕີແມ່ນຫຍັງ?

ໃນສະບາຍດີ "ສະບາຍດີໂລກ" ຈາກບົດຮຽນສຸດທ້າຍມັນທັງຫມົດແມ່ນສະຖຽນລະພາບຫຼາຍ. script ບໍ່ໄດ້ເຮັດຫຍັງເລີຍ.

ພວກເຮົາສາມາດປັບປຸງສະບັບ Hello World ໄດ້ແນວໃດ?

ຈະເປັນແນວໃດກ່ຽວກັບ script ທີ່ greets ບຸກຄົນຜູ້ທີ່ດໍາເນີນການມັນ? ແທນທີ່ຈະເວົ້າວ່າ "Hello World" ມັນຈະເວົ້າວ່າ "Hello Gary", "Hello Tim" ຫຼື "Hello Dolly".

ໂດຍບໍ່ມີຄວາມສາມາດທີ່ຈະຍອມຮັບຕົວກໍານົດການປ້ອນຂໍ້ມູນພວກເຮົາຈະຕ້ອງຂຽນສາມສະຄິບ "hellogary.sh", "hellotim.sh" ແລະ "hellodolly.sh".

ໂດຍໃຫ້ script ຂອງພວກເຮົາອ່ານພາລາມິຕິການປ້ອນຂໍ້ມູນ, ພວກເຮົາສາມາດນໍາໃຊ້ສະຄິບຫນຶ່ງເພື່ອຕ້ອນຮັບທຸກໆຄົນ.

ເພື່ອເຮັດສິ່ງນີ້ເປີດຫນ້າຕ່າງສຸດທ້າຍ (CTRL + ALT + T) ແລະນໍາທາງໄປຫາໂຟເດີສະຄິບຂອງທ່ານໂດຍການພິມຕໍ່ໄປນີ້: ( ກ່ຽວກັບຄໍາສັ່ງ cd )

cd scripts

ສ້າງ script ໃຫມ່ທີ່ເອີ້ນວ່າ greetme.sh ໂດຍການພິມຕໍ່ໄປນີ້: ( ກ່ຽວກັບ touch command )

ແຕະ greetme.sh

ເປີດ script ໃນບັນນາທິການ favorite ຂອງທ່ານໂດຍການພິມດັ່ງຕໍ່ໄປນີ້: ( ກ່ຽວກັບ nano ຄໍາສັ່ງ )

nano greetmesh

ໃສ່ຂໍ້ຄວາມຕໍ່ໄປນີ້ພາຍໃນ nano:

#! / bin / bash echo "hello $ @"

ກົດ CTRL ແລະ O ເພື່ອບັນທຶກໄຟລ໌ແລະຫຼັງຈາກນັ້ນ CTRL ແລະ X ເພື່ອປິດໄຟລ໌.

ເພື່ອດໍາເນີນການສະຄິບໃສ່ດັ່ງຕໍ່ໄປນີ້ເຂົ້າໄປໃນບັນທັດຄໍາສັ່ງແທນທີ່ມີຊື່ຂອງທ່ານ.

sh greetmesh

ຖ້າຂ້ອຍດໍາເນີນ script ດ້ວຍຊື່ຂອງຂ້ອຍມັນຈະສະແດງຄໍາວ່າ "Hello Gary".

ເສັ້ນທໍາອິດມີເສັ້ນ #! / bin / bash ເຊິ່ງຖືກໃຊ້ເພື່ອກໍານົດໄຟລ໌ເປັນ script bash.

ເສັ້ນທີສອງໃຊ້ຄໍາສັ່ງ echo ເພື່ອ echo ຄໍາແປຄວາມຊ່ວຍເຫຼືອແລະຫຼັງຈາກນັ້ນມີລະຫັດ @ $ strange. ( ກ່ຽວກັບຄໍາສັ່ງ echo )

$ @ ຂະຫຍາຍເພື່ອສະແດງທຸກພາລາມິເຕີທີ່ເຂົ້າມາພ້ອມກັບຊື່ສະຄິບ. ດັ່ງນັ້ນຖ້າທ່ານພິມ "sh greetme.sh tim" ຄໍາວ່າ "hello tim" ຈະຖືກສະແດງ. ຖ້າທ່ານພິມ "greetms.sh tim smith" ແລ້ວຄໍາວ່າ "hello tim smith" ຈະຖືກສະແດງ.

ມັນອາດຈະດີສໍາລັບອັກສອນ greetme.sh ພຽງແຕ່ເວົ້າວ່າສະບາຍດີໂດຍໃຊ້ພຽງຊື່ທໍາອິດ. ບໍ່ມີໃຜເວົ້າວ່າ "ສະບາຍດີໃຫມ່" ເມື່ອພວກເຂົາພົບຂ້ອຍ, ພວກເຂົາອາດຈະເວົ້າວ່າ "ສະບາຍດີ" ແມ້ວ່າ.

ໃຫ້ປ່ຽນແປງສະຄິບເພື່ອໃຫ້ມັນໃຊ້ພາລາມິເຕີທໍາອິດ. ເປີດບັນຊີ greetme.sh ໃນ nano ໂດຍການພິມຕໍ່ໄປນີ້:

nano greetmesh

ປ່ຽນ script ເພື່ອໃຫ້ມັນອ່ານດັ່ງຕໍ່ໄປນີ້:

#! / bin / bash echo "ສະບາຍດີ $ 1"

ບັນທຶກສະຄິບໂດຍກົດ CTRL ແລະ O ແລ້ວອອກໂດຍການກົດ CTRL ແລະ X.

ດໍາເນີນການ script ດັ່ງທີ່ສະແດງຢູ່ລຸ່ມນີ້ (ແທນທີ່ຊື່ຂອງຂ້ອຍກັບທ່ານ):

sh greetmesh gary newell

ໃນເວລາທີ່ທ່ານດໍາເນີນການ script ມັນຈະເວົ້າວ່າ "hello gary" (ຫຼືຫວັງວ່າ "ສະບາຍດີ" ແລະສິ່ງໃດກໍ່ຕາມຊື່ຂອງທ່ານແມ່ນ.

1 ຫຼັງຈາກສັນຍາລັກ $ ໂດຍພື້ນຖານແລ້ວບອກຄໍາສັ່ງ echo, ໃຊ້ພາລາມິເຕີທໍາອິດ. ຖ້າທ່ານປ່ຽນ $ 1 ກັບ $ 2 ແລ້ວມັນຈະສະແດງ "hello newell" (ຫຼືໃດກໍ່ຕາມນາມສະກຸນຂອງທ່ານແມ່ນ).

ຢ່າງເປັນທາງການຖ້າທ່ານແທນທີ່ $ 2 ກັບ $ 3 ແລະແລ່ນ script ດ້ວຍພຽງແຕ່ 2 ຕົວກໍານົດການຜະລິດພຽງແຕ່ຈະເປັນ "Hello".

ມັນເປັນໄປໄດ້ທີ່ຈະສະແດງແລະຈັດການຈໍານວນພາລາມິເຕີທີ່ເຂົ້າຈິງແລະໃນບົດຮຽນຕໍ່ມາຂ້ອຍຈະສະແດງວິທີການໃຊ້ຕົວກໍານົດຕົວກໍານົດສໍາລັບຈຸດປະສົງການກວດສອບ.

ເພື່ອສະແດງຈໍານວນພາລາມິເຕີທີ່ເຂົ້າໃສ່ເປີດ greetme.sh script (nano greetme.sh) ແລະແກ້ໄຂຂໍ້ຄວາມດັ່ງຕໍ່ໄປນີ້:

#! / bin / bash echo "ທ່ານເຂົ້າ $ ຊື່ #" echo "hello $ @"

ກົດ CTRL ແລະ O ເພື່ອບັນທຶກສະຄິບແລະ CTRL ແລະ X ເພື່ອອອກຈາກ nano.

$ # ໃນສາຍທີ 2 ສະແດງຈໍານວນພາລາມິເຕີເຂົ້າມາ.

ດັ່ງນັ້ນທັງຫມົດນີ້ກໍ່ແມ່ນເລື່ອງໃຫມ່ແຕ່ບໍ່ແມ່ນປະໂຫຍດຫຼາຍ. ຜູ້ທີ່ຕ້ອງການສະຄິບທີ່ພຽງແຕ່ສະແດງ "ສະບາຍດີ"?

ການນໍາໃຊ້ທີ່ແທ້ຈິງສໍາລັບຄໍາເວົ້າຂອງ echo ແມ່ນເພື່ອໃຫ້ມີຜົນກະທົບແລະຜົນຜະລິດທີ່ມີຜົນຕໍ່ຜູ້ໃຊ້. ຖ້າທ່ານສາມາດຈິນຕະນາການວ່າທ່ານຕ້ອງການທີ່ຈະເຮັດສິ່ງທີ່ສັບສົນເຊິ່ງມີບັນຫາຈໍານວນຫນຶ່ງທີ່ຮ້າຍແຮງແລະການຈັດການໂຟນເດີ / ໂຟນເດີມັນຈະເປັນປະໂຫຍດທີ່ຈະສະແດງໃຫ້ຜູ້ໃຊ້ຮູ້ສິ່ງທີ່ເກີດຂື້ນໃນແຕ່ລະຂັ້ນຕອນ.

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

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

ເປີດບັນຊີ greetme.sh ຂອງທ່ານແລະແກ້ໄຂມັນດັ່ງລຸ່ມນີ້:

#! / bin / bash echo "Filename: $ 0" echo "Process ID: $$" echo "---------------------------- --- "echo" ທ່ານເຂົ້າ $ # ຊື່ "echo" ສະບາຍດີ @ $ "

ກົດ CTRL ແລະ O ເພື່ອບັນທຶກໄຟລ໌ແລະ CTRL ແລະ X ເພື່ອອອກຈາກ.

ຕອນນີ້ເອີ້ນໃຊ້ສະຄິບ (ແທນທີ່ດ້ວຍຊື່ຂອງທ່ານ).

sh greetmesh

ເວລານີ້ສະແດງສະແດງດັ່ງຕໍ່ໄປນີ້:

ຊື່ໄຟລ໌: greetms.sh ຂະບວນການຫມາຍເຫດ: 18595 ------------------------------ ທ່ານຂຽນ 2 ຊື່ hello gary newell

$ 0 ໃນເສັ້ນທໍາອິດຂອງສະຄິບສະແດງຊື່ຂອງສະຄິບທີ່ທ່ານກໍາລັງເຮັດ. ໃຫ້ສັງເກດວ່າມັນເປັນເງິນໂດລາແລະບໍ່ແມ່ນເງິນໂດລາ o.

$$ ໃນເສັ້ນທີສອງສະແດງ id process ຂອງ script ທີ່ທ່ານກໍາລັງແລ່ນ. ເປັນຫຍັງຈຶ່ງເປັນປະໂຫຍດ? ຖ້າທ່ານກໍາລັງດໍາເນີນ script ໃນ foreground ທ່ານສາມາດຍົກເລີກມັນໄດ້ໂດຍການກົດ CTRL ແລະ C ຖ້າທ່ານລັນສະຄິບໃນພື້ນຫລັງແລະມັນກໍ່ເລີ່ມ looping ແລະເຮັດສິ່ງດຽວກັນອີກຄັ້ງຫຼືກໍ່ໃຫ້ເກີດຄວາມເສຍຫາຍຕໍ່ລະບົບຂອງທ່ານທີ່ທ່ານຕ້ອງການ ເພື່ອຂ້າມັນ.

ເພື່ອຂ້າ script ເຮັດວຽກຢູ່ໃນພື້ນຫລັງ, ທ່ານຕ້ອງການ id process ຂອງ script. ມັນຈະບໍ່ດີຖ້າ script ເຮັດໃຫ້ id process ເປັນສ່ວນຫນຶ່ງຂອງຜົນຜະລິດຂອງມັນ. ( ກ່ຽວກັບ ps ແລະຄ່າ commands )

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

ມັນເປັນເລື່ອງທົ່ວໄປສໍາລັບຜົນຜະລິດສະຄິບທີ່ຈະຂຽນລົງໃນໄຟລ໌ຜົນຜະລິດ. ເຮັດການດໍາເນີນການ script ຂອງທ່ານດັ່ງຕໍ່ໄປນີ້:

sh greetmesh gary> greetmelog

ສັນຍາລັກໃນຄໍາສັ່ງຂ້າງເທິງສະແດງຂໍ້ຄວາມ "hello gary" ກັບໄຟລ໌ທີ່ເອີ້ນວ່າ greetme.log.

ທຸກໆຄັ້ງທີ່ທ່ານດໍາເນີນການສະຄິບທີ່ມີສັນຍາລັກ> ມັນ overwrites ເນື້ອຫາຂອງໄຟລ໌ຜົນຜະລິດ. ຖ້າທ່ານຕ້ອງການທີ່ຈະເຂົ້າຮ່ວມກັບໄຟລ໌ແທນທີ່> ດ້ວຍ >>.

Summary

ທ່ານປະຈຸບັນຄວນຈະສາມາດຂຽນຂໍ້ຄວາມກັບຫນ້າຈໍແລະຮັບເອົາພາລາມິຕິການປ້ອນຂໍ້ມູນ.