ലിനക്സിലെ നെസ്റ്റഡ് വേരിയബിൾ സബ്സ്റ്റിറ്റ്യൂഷനും മുൻകൂട്ടി നിശ്ചയിച്ച ബാഷ് വേരിയബിളുകളും - ഭാഗം 11


BASH Shell-നെക്കുറിച്ചുള്ള അവസാനത്തെ രണ്ട് ലേഖനങ്ങൾ, ഞങ്ങൾ വേരിയബിളുകൾ വിശദമായി ചർച്ചചെയ്തു, ഞങ്ങളുടെ വായനക്കാർക്കിടയിൽ വളരെയധികം വിലമതിക്കപ്പെട്ടു. Tecmint-ടീം എന്ന നിലയിൽ, വിശദാംശങ്ങളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഏറ്റവും പുതിയതും കാലികവും പ്രസക്തവുമായ വിഷയങ്ങൾ നിങ്ങൾക്ക് നൽകാൻ ഞങ്ങൾ വളരെ താൽപ്പര്യപ്പെടുന്നു. മാത്രമല്ല, ബന്ധപ്പെട്ട വിഷയങ്ങളുടെ പ്രധാന കാഴ്ചപ്പാടുകൾ സ്പർശിക്കാൻ ഞങ്ങൾ എപ്പോഴും ശ്രമിക്കുന്നു.

ലിനക്സ് വേരിയബിളുകളെക്കുറിച്ചുള്ള അവസാന ലേഖനം ഇവിടെയുണ്ട്, ഈ വിഷയം അവസാനിപ്പിക്കുന്നതിന് മുമ്പ് ഷെല്ലിൽ നിർവചിച്ചിരിക്കുന്ന വേരിയബിളുകളും വേരിയബിളുകളും ഞങ്ങൾ കാണാൻ പോകുന്നു.

കമാൻഡ് ശരിക്കും എക്സിക്യൂട്ട് ചെയ്യുന്നതിനുമുമ്പ് ബാഷ് വേരിയബിൾ സബ്സ്റ്റിറ്റ്യൂഷൻ നടത്തുന്നു. ലിനക്സ് ബാഷ് ഷെൽ കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നതിനുമുമ്പ് എല്ലാ '$' ചിഹ്നങ്ങളും തിരയുകയും വേരിയബിളിന്റെ മൂല്യം ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുകയും ചെയ്യുന്നു. ബാഷ് വേരിയബിൾ സബ്സ്റ്റിറ്റ്യൂഷൻ ഒരു പ്രാവശ്യം മാത്രമാണ് നടത്തുന്നത്. നമുക്ക് നെസ്റ്റഡ് വേരിയബിളുകൾ ഉണ്ടെങ്കിൽ എന്തുചെയ്യും?

കുറിപ്പ്: നെസ്റ്റഡ് വേരിയബിൾ കൊണ്ട് ഞങ്ങൾ അർത്ഥമാക്കുന്നത്, വേരിയബിളിനുള്ളിൽ പ്രഖ്യാപിച്ച വേരിയബിൾ എന്നാണ്. ചുവടെയുള്ള ഉദാഹരണത്തിൽ മുകളിലുള്ള സാഹചര്യം നോക്കാം.

താഴെ കൊടുത്തിരിക്കുന്നതുപോലെ റീഡ്-ഒൺലിയും എക്uസിക്യൂട്ടബിളും ആയ ഒരു വേരിയബിൾ പ്രഖ്യാപിക്കുക.

[email :~$ declare -rx Linux_best_website="linux-console.net"

സംഭരിച്ചിരിക്കുന്ന വേരിയബിളിന്റെ മൂല്യം പരിശോധിക്കുക.

[email :~$ printf "%s" "$Linux_best_website" 

linux-console.net

ഇപ്പോൾ മറ്റൊരു വേരിയബിൾ പ്രഖ്യാപിക്കുക, അത് വീണ്ടും റീഡ്-ഒൺലിയും എക്സിക്യൂട്ടബിളും ആണ്.

[email :~$ declare -rx Linux_website="Linux_best_website"

ഇപ്പോൾ സാഹചര്യം, ഞങ്ങൾ രണ്ട് വേരിയബിളുകൾ നിർവചിച്ചു.

'Linux_best_website', അതിന്റെ മൂല്യം \linux-console.net
കൂടാതെ, 'Linux_website', അതിന്റെ മൂല്യം \Linux_best_website ആണ്

താഴെയുള്ള ഒരു വരി കമാൻഡ് നമ്മൾ പ്രവർത്തിപ്പിച്ചാൽ ഫലം എന്തായിരിക്കും?

[email :~$ printf "%s" "$Linux_website"

ഇത് ആദ്യം '$Linux_website' എന്ന വേരിയബിളിന് പകരം \Linux_best_website മൂല്യം നൽകണം, തുടർന്ന് \$Linux_best_website” വീണ്ടും ഒരു വേരിയബിളാണ് ഇതിന്റെ മൂല്യം \linux-console.net ആണ്. അതിനാൽ താഴെയുള്ള കമാൻഡ് പ്രവർത്തിപ്പിക്കുന്നതിന്റെ അവസാന ഔട്ട്പുട്ട് ഇതായിരിക്കണം.

[email :~$ printf "%s" "$Linux_website" 

linux-console.net

പക്ഷേ, നിർഭാഗ്യവശാൽ, സ്ഥിതി ഇതല്ല, ഞങ്ങൾക്ക് ലഭിക്കുന്ന ഔട്ട്uപുട്ട് Linux_best_website ആണ്.

കാരണം? അതെ! ബാഷ് വേരിയബിളിന്റെ മൂല്യം ഒരിക്കൽ മാത്രം മാറ്റിസ്ഥാപിക്കുന്നു. നമുക്ക് വേരിയബിളുകൾ ഇടയ്ക്കിടെ മാറ്റിസ്ഥാപിക്കേണ്ടതും ഒന്നിലധികം തവണ വേരിയബിളിന് പകരം വയ്ക്കേണ്ടതുമായ സങ്കീർണ്ണമായ സ്ക്രിപ്റ്റുകളുടെയും പ്രോഗ്രാമുകളുടെയും കാര്യമോ?

ഇവിടെ ‘eval’ എന്ന കമാൻഡ് വരുന്നു, ഇത് ഒരു സ്uക്രിപ്റ്റിൽ ഒന്നിലധികം തവണ വേരിയബിൾ സബ്uസ്റ്റിറ്റ്യൂഷന്റെ അധിക ജോലി ചെയ്യുന്നു. മുഴുവൻ പ്രവർത്തനവും ഗ്ലാസ് പോലെ വ്യക്തമാക്കുന്നതിനുള്ള ഒരു ഉദാഹരണം ഇതാ.

ഒരു വേരിയബിൾ x പ്രഖ്യാപിക്കുക, അതിന്റെ മൂല്യം 10 ആണ്.

[email :~/Desktop$ declare x=10

വേരിയബിളിന്റെ മൂല്യം പരിശോധിക്കുക x, ഞങ്ങൾ ഇപ്പോൾ നിർവചിച്ചു.

[email :~/Desktop$ echo $yx

x10

ഒരു വേരിയബിൾ y പ്രഖ്യാപിക്കുക, അതിന്റെ മൂല്യം x ആണ്.

[email :~/Desktop$ declare y=x

വേരിയബിളിന്റെ മൂല്യം പരിശോധിക്കുക y, ഞങ്ങൾ ഇപ്പോൾ നിർവചിച്ചു.

[email :~/Desktop$ echo $y 

x

BASH ഒറ്റത്തവണ വേരിയബിൾ സബ്uസ്റ്റിറ്റ്യൂഷന്റെ പ്രശ്uനം ഇതാ, ഇത് വേരിയബിൾ സബ്uസ്റ്റിറ്റ്യൂഷന്റെ അധിക റൗണ്ട് നടത്തില്ല. ഇത് പരിഹരിക്കാൻ ഞങ്ങൾ ‘eval’ കമാൻഡ് ഉപയോഗിക്കുന്നു.

[email :~/Desktop$ eval y=$x

ഇപ്പോൾ ‘y’ എന്ന വേരിയബിളിന്റെ മൂല്യം പരിശോധിക്കുക.

[email :~/Desktop$ echo $y 

10

ഹുറേ! പ്രശ്നം പരിഹരിച്ചു, 'ഇവൽ' കമാൻഡ് ഓട്ടത്തിൽ വിജയിച്ചു :)

വലിയ സ്ക്രിപ്റ്റ് പ്രോഗ്രാമുകളിൽ ‘eval’ കമാൻഡ് വളരെ സഹായകമാണ്, മാത്രമല്ല ഇത് വളരെ എളുപ്പമുള്ള ഉപകരണവുമാണ്.

ഈ പോസ്റ്റിലെ അവസാനത്തേതും എന്നാൽ ഏറ്റവും കുറഞ്ഞതുമായ ഭാഗം BASH മുൻകൂട്ടി നിശ്ചയിച്ച വേരിയബിളുകളാണ്. ഇല്ല! ഈ ലിസ്റ്റ് കണ്ട് പരിഭ്രാന്തരാകരുത്. നിങ്ങൾ സ്ക്രിപ്റ്റുകൾ എഴുതാൻ തുടങ്ങുന്നതിനുമുമ്പ്, ചിലത് ഒഴികെയുള്ള മുഴുവൻ പട്ടികയും ഓർക്കേണ്ടതില്ല. പഠന പ്രക്രിയയുടെ ഭാഗമായി, ഞങ്ങൾ ബാഷ് മുൻകൂട്ടി നിശ്ചയിച്ച വേരിയബിൾ ലിസ്റ്റ് അവതരിപ്പിക്കുന്നു.

മുൻകൂട്ടി നിശ്ചയിച്ച ബാഷ് വേരിയബിളിന്റെ ഒരു വലിയ ലിസ്റ്റ് ഉണ്ട്. ഏറ്റവും കൂടുതൽ ഉപയോഗിക്കുന്നവയുടെ ഒരു ലിസ്റ്റ് നിർമ്മിക്കാൻ ഞങ്ങൾ ശ്രമിച്ചു.

ഇപ്പോഴത്തേക്ക് ഇത്രമാത്രം. രസകരമായ മറ്റൊരു ലേഖനവുമായി ഞാൻ ഇവിടെ വീണ്ടും വരും. അതുവരെ, TecMint-ലേക്ക് കണക്റ്റുചെയ്uതിരിക്കുക. ചുവടെയുള്ള അഭിപ്രായ വിഭാഗത്തിൽ നിങ്ങളുടെ വിലയേറിയ ഫീഡ്uബാക്ക് ഞങ്ങൾക്ക് നൽകാൻ മറക്കരുത്.