ຄວາມເຂົ້າໃຈແລະການຂຽນຕົວແປຂອງ Linux ໃນ Shell Scripting - Part 10


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

ທຸກໆບົດຂຽນທີ່ພວກເຮົາຂຽນໄວ້ ສຳ ລັບຜູ້ອ່ານຂອງພວກເຮົາແມ່ນໄດ້ຮັບການຕີລາຄາສູງລວມທັງບົດສຸດທ້າຍ“ ຄວາມເຂົ້າໃຈຂອງຕົວແປ Linux”. ພວກເຮົາ ກຳ ລັງເສີມຂະຫຍາຍບົດຂຽນສຸດທ້າຍໃຫ້ເປັນລະດັບ ໃໝ່.

ຄຸນລັກສະນະຂອງຕົວປ່ຽນແປງ

ແຕ່ລະຕົວແປໃນ Linux Environment ມີຕົວເລືອກທີ່ແນ່ນອນ, ແລະສິ່ງເຫຼົ່ານັ້ນເອີ້ນວ່າ 'ຄຸນລັກສະນະ'. ຕົວເລືອກຫລືຄຸນລັກສະນະເຫຼົ່ານີ້ສາມາດຫັນ ເປີດ ແລະ ປິດ , ເມື່ອຕ້ອງການຕາມສະຖານະການໂດຍໃຊ້ ຄຳ ສັ່ງ“ ປະກາດ”.

ຕົວຢ່າງຂອງຄຸນລັກສະນະຂອງຕົວແປ ກຳ ລັງໃຊ້ຕົວປ່ຽນສະຫຼັບເວົ້າ ‘ -i ‘ ເຊິ່ງຈະເປີດຄຸນລັກສະນະຂອງຕົວເລກ ສຳ ລັບຕົວແປທີ່ກົງກັນ. ເຖິງແມ່ນວ່າຄ່າທີ່ບໍ່ແມ່ນຕົວເລກຖືກສົ່ງຜ່ານເພື່ອປ່ຽນ ' -i ' ມັນຈະບໍ່ຖິ້ມຂໍ້ຜິດພາດແລະຜົນໄດ້ຮັບ ' 0 ເປັນການຕີຄວາມ ໝາຍ ແບບເຕັມສ່ວນ. ໃນທີ່ນີ້ມັນຈະແຈ້ງຂື້ນຈາກຕົວຢ່າງຂ້າງລຸ່ມນີ້.

ປະກາດຕົວປ່ຽນຕົວແປ, ໃບບິນ = 121

[email :~$ declare -i bill=121

Printf ມູນຄ່າຂອງໃບບິນທີ່ມີຕົວປ່ຽນແປງ.

[email :~$ printf "%d\n" "$bill" 

121

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

[email :~$ bill=tecmint

ໃນປັດຈຸບັນ, ອີກເທື່ອຫນຶ່ງ printf ມູນຄ່າຂອງໃບບິນປ່ຽນແປງໄດ້.

[email :~$ printf "%d\n" "$bill" 

0

ແຈ້ງການ ' 0 ທີ່ຢູ່ຂໍ້ຄວາມຜິດພາດ.

[email :~$ declare -p bill 

declare -i bill="121"

ນີ້, ປຸ່ມ -p (ຢືນ ສຳ ລັບການພິມ) ມາເພື່ອການກູ້ໄພ.

ເພື່ອປ່ຽນ ປິດ ຄຸນລັກສະນະຂອງຕົວປ່ຽນແປງສິ່ງທີ່ພວກເຮົາຕ້ອງການທັງ ໝົດ ແມ່ນການໃສ່ເຄື່ອງ ໝາຍ + ( ບວກ ) ກ່ອນການສະຫຼັບ. ນີ້ມັນຈະແຈ້ງກວ່າຈາກຕົວຢ່າງຂ້າງລຸ່ມນີ້.

ສັບປ່ຽນ ປິດ ຄຸນລັກສະນະເລກເຕັມ ສຳ ລັບຕົວແປຂ້າງເທິງ.

[email :~$ declare +i bill

ກວດສອບຄຸນຄ່າຂອງຕົວແປ.

[email :~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

ດຽວນີ້ພິມຄ່າຂອງຕົວປ່ຽນໂດຍໃຊ້ສາຍສະຫຼັບ.

[email :~$ printf "%s\n" "$bill" 

tecmint

ນີ້ຢູ່ໃນຕົວຢ່າງຂ້າງເທິງ, bash ບໍ່ສາມາດຕັດສິນຄ່າທີ່ບໍ່ແມ່ນຕົວເລກເປັນຂໍ້ຜິດພາດ, ເຖິງຢ່າງໃດກໍ່ຕາມ printf ແມ່ນການຕີຄວາມ ໝາຍ, ສິ່ງທີ່ອາດຈະເປັນຕົວເລກແລະສິ່ງທີ່ບໍ່ສາມາດເປັນ.

ຕົວອ່ານເທົ່ານັ້ນ

ທ່ານອາດຈະເຄີຍໄດ້ຍິນພຽງແຕ່ຄວາມ ຈຳ (ພຽງແຕ່ ROM ), ແຕ່ວ່າຕົວປ່ຽນເທົ່ານັ້ນແມ່ນຫຍັງ? ມັນມີຄວາມຄ້າຍຄືກັນກັບ ROM ບໍ?

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

ຕັດສິນໃຈອ່ານຊື່ສຽງເທົ່ານັ້ນ ( -r ) ຊື່ຕົວແປ, ມູນຄ່າຂອງມັນແມ່ນ“ linux-console.net”.

[email :~$ declare -r name="linux-console.net"

Printf ມູນຄ່າຂອງຕົວປ່ຽນແປງປະກາດຂ້າງເທິງ.

[email :~$ printf "%s\n" "$name" 

linux-console.net

ພະຍາຍາມປ່ຽນຄຸນຄ່າຂອງຕົວແປ.

[email :~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

ດັ່ງທີ່ໄດ້ກ່າວມາຂ້າງເທິງຄຸນລັກສະນະຂອງຕົວແປທີ່ສາມາດອ່ານໄດ້ພຽງແຕ່ສາມາດປ່ຽນແປງໄດ້ໂດຍໃຊ້ເຄື່ອງ ໝາຍ“ + ‘.

ການສົ່ງອອກຕົວແປໃນ Linux

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

ຕົວແປສາມາດຖືກສົ່ງອອກນອກຫອຍໂດຍໃຊ້ສະຫວິດ ປະກາດ -x (ສົ່ງອອກ) ເຊິ່ງຮັບຮູ້ຫອຍສິ່ງທີ່ທ່ານຕ້ອງການສົ່ງອອກ. ຕົວປ່ຽນແປງການສົ່ງອອກປະກາດສາມາດໃຊ້ເປັນ.

[email :~$ declare -x variable=”Constant_Value”

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

ພວກເຮົາຕ້ອງການຕົວແປທີ່ຄວນອ່ານເທົ່ານັ້ນແລະມີຢູ່ນອກສະຄິບ, ພວກເຮົາຕ້ອງໃຊ້ຕົວປ່ຽນ -r ແລະປ່ຽນ -x ພ້ອມໆກັນ.

[email :~$ declare -rx variable=”Constant_Value”

ຕົວແປສິ່ງແວດລ້ອມ

ຕົວແປຕ່າງໆທີ່ຖືກແບ່ງປັນລະຫວ່າງໂປແກຼມແລະໂປແກຼມທີ່ປະຕິບັດພວກມັນ. ຕົວແປສິ່ງແວດລ້ອມສາມາດຖືກສົ່ງອອກແຕ່ຄຸນລັກສະນະບໍ່ສາມາດຖືກມອບ ໝາຍ ໃຫ້.

ເຂົ້າໃຈທິດສະດີຂ້າງເທິງໃນພາກປະຕິບັດຕົວຈິງ. ນີ້ພວກເຮົາມີສອງສະຄິບ 0.sh ແລະ 1.sh .

# 0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

ແລະບົດທີສອງແມ່ນ.

# 1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=linux-console.net 
printf "%s\n" "$name"
exit 0

ນີ້ແມ່ນສິ່ງທີ່ ກຳ ລັງເກີດຂື້ນ, ແມ່ນຕົວແປ (ຊື່) ຖືກປະກາດວ່າເປັນພຽງແຕ່ອ່ານແລະສົ່ງອອກແລະທັນທີຫຼັງຈາກທີ່ຂຽນບົດທີສອງນັ້ນ.

ສະຄິບທີສອງພຽງແຕ່ພິມຕົວແປຈາກຕົວອັກສອນ ທຳ ອິດທີ່ຖືກສົ່ງອອກໃນ ຄຳ ສັ່ງ printf ທຳ ອິດ. ໃນ ຄຳ ຖະແຫຼງການ printf ທີສອງມັນສະແດງໃຫ້ເຫັນຄ່າ ໃໝ່ ທີ່ຖືກມອບ ໝາຍ ໃຫ້ຕົວປ່ຽນແປງ ' ຊື່ '.

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

ຄຳ ສັ່ງ ປະກາດ ອະນຸຍາດໃຫ້ປ່ຽນທັງ ໝົດ ດ້ານລຸ່ມພ້ອມກັບການປະສົມປະສານຂອງມັນ.

<

  • -a : ປະກາດເປັນແຖວ.
  • -f : ສະແດງ ໜ້າ ທີ່ແລະ ຄຳ ນິຍາມ.
  • -F : ສະແດງຊື່ ໜ້າ ທີ່.
  • -r : ປະກາດຕົວແປເປັນການອ່ານເທົ່ານັ້ນ.
  • -x : ປະກາດຕົວປ່ຽນແປງທີ່ສາມາດສົ່ງອອກໄດ້.
  • -I : ປະກາດຕົວປ່ຽນເປັນ Integer.
  • ດຽວນີ້ ໝົດ ແລ້ວ. ໃນບົດຄວາມຕໍ່ໄປພວກເຮົາຈະໄດ້ສົນທະນາກ່ຽວກັບວິທີການປ່ຽນແທນຕົວປ່ຽນແປງໂດຍໃຊ້ ຄຳ ສັ່ງ ‘ eval ’ ແລະຕົວແປທີ່ໄດ້ ກຳ ນົດໄວ້ແລ້ວໃນ bash ກ່ອນທີ່ຈະປິດຫົວຂໍ້ນີ້. ຫວັງວ່າທ່ານປະຊາຊົນມີຄວາມສຸກກັບການເດີນທາງຂອງທ່ານໄປສູ່ຄວາມເລິກເຊິ່ງຂອງການຂຽນອັກສອນ. ຈົນກ່ວານັ້ນຈະຕິດຕາມແລະເຊື່ອມຕໍ່ກັບ linux-console.net.