ஷெல் ஸ்கிரிப்ட்டில் ஹெரடோக்கை எவ்வாறு பயன்படுத்துவது
இங்கே ஆவணம் (ஹெரெடோக்) என்பது ஒரு உள்ளீடு அல்லது கோப்பு ஸ்ட்ரீம் என்பது ஒரு சிறப்பு குறியீடாக கருதப்படுகிறது. குறியீட்டின் இந்த தொகுதி செயலாக்கத்திற்கான கட்டளைக்கு அனுப்பப்படும். ஹெரடோக் யுனிக்ஸ் ஷெல்களில் இருந்து உருவாகிறது, மேலும் பிரபலமான லினக்ஸ் ஷெல்களில் sh, tcsh, ksh, bash, zsh, csh போன்றவற்றில் காணலாம். குறிப்பாக, பெர்ல், ரூபி, பி.எச்.பி போன்ற பிற நிரலாக்க மொழிகளும் ஹெரடோக்கை ஆதரிக்கின்றன.
ஹெர்டோக்கின் அமைப்பு
ஹெரடோக் 2 கோண அடைப்புக்குறிகளைப் பயன்படுத்துகிறது (<<) குறியீடு> அதைத் தொடர்ந்து ஒரு டிலிமிட்டர் டோக்கனும். குறியீட்டின் தொகுதியை நிறுத்த அதே டிலிமிட்டர் டோக்கன் பயன்படுத்தப்படும். டிலிமிட்டருக்குள் எது வந்தாலும் அது குறியீட்டின் தொகுப்பாகக் கருதப்படுகிறது.
கீழே உள்ள உதாரணத்தைப் பாருங்கள். குறியீட்டின் தொகுதியை பூனை கட்டளைக்கு திருப்பி விடுகிறேன். இங்கே டிலிமிட்டர் “பிளாக்” என அமைக்கப்பட்டு அதே “பிளாக்” ஆல் நிறுத்தப்படுகிறது.
cat << BLOCK Hello world Today date is $(date +%F) My home directory = ${HOME} BLOCK
குறிப்பு: தொகுதியைத் தொடங்கவும், தொகுதியை நிறுத்தவும் அதே டிலிமிட்டர் டோக்கனைப் பயன்படுத்த வேண்டும்.
மல்டிலைன் கருத்துகளை உருவாக்கவும்
நீங்கள் இப்போது பாஷில் எப்போதாவது குறியிடுகிறீர்கள் என்றால், சி அல்லது ஜாவா போன்ற பல கருத்துக்களை முன்னிருப்பாக பாஷ் ஆதரிக்காது என்பது உங்களுக்குத் தெரியும். இதை சமாளிக்க நீங்கள் HereDoc ஐப் பயன்படுத்தலாம்.
இது பல வரி கருத்தை ஆதரிக்கும் பாஷின் உள்ளமைக்கப்பட்ட அம்சம் அல்ல, ஆனால் ஒரு ஹேக் மட்டுமே. நீங்கள் எந்த கட்டளைக்கும் ஹெரெடோக்கை திருப்பி விடவில்லை என்றால், மொழிபெயர்ப்பாளர் குறியீட்டின் தொகுதியைப் படிப்பார், எதையும் இயக்க மாட்டார்.
<< COMMENT This is comment line 1 This is comment line 2 This is comment line 3 COMMENT
வெள்ளை இடங்களைக் கையாளுதல்
இயல்பாக, ஹெரடோக் எந்த வெள்ளை இட எழுத்துக்களையும் (தாவல்கள், இடைவெளிகள்) அடக்காது. (<<)
க்குப் பிறகு கோடு (-) குறியீடு> ஐச் சேர்ப்பதன் மூலம் இந்த நடத்தை மேலெழுதலாம். இது அனைத்து தாவல் இடங்களையும் அடக்கும், ஆனால் வெள்ளை இடங்கள் அடக்கப்படாது.
cat <<- BLOCK This line has no whitespace. This line has 2 white spaces at the beginning. This line has a single tab. This line has 2 tabs. This line has 3 tabs. BLOCK
மாறி மற்றும் கட்டளை சப்ஸ்டியூஷன்
ஹெரடோக் மாறி மாற்றீட்டை ஏற்றுக்கொள்கிறது. மாறிகள் பயனர் வரையறுக்கப்பட்ட மாறிகள் அல்லது சுற்றுச்சூழல் மாறிகள்.
TODAY=$(date +%F) cat << BLOCK1 # User defined variables Today date is = ${TODAY} #Environ Variables I am running as = ${USER} My home dir is = ${HOME} I am using ${SHELL} as my shell BLOCK1
இதேபோல், நீங்கள் ஹெரடோக் குறியீடு தொகுதிக்குள் எந்த கட்டளைகளையும் இயக்கலாம்.
cat << BLOCK2 $(uname -a) BLOCK2
சிறப்பு எழுத்துக்களைத் தப்பித்தல்
சிறப்பு எழுத்துக்களில் இருந்து தப்பிக்க பல வழிகள் உள்ளன. நீங்கள் அதை எழுத்து மட்டத்தில் அல்லது டாக் மட்டத்தில் செய்யலாம்.
தனிப்பட்ட சிறப்பு எழுத்துக்களில் இருந்து தப்பிக்க பின்சாய்வுக்கோட்டைப் பயன்படுத்தவும் (\).
cat << BLOCK4 $(uname -a) BLOCK4 cat << BLOCK5 Today date is = ${TODAY} BLOCK5
தொகுதிக்குள் உள்ள அனைத்து சிறப்பு எழுத்துக்களிலிருந்தும் தப்பிக்க, டிலிமிட்டரை ஒற்றை மேற்கோள்கள், இரட்டை மேற்கோள்கள் அல்லது முன்னொட்டு டிலிமிட்டருடன் பின்சாய்வுக்கோடானது.
cat << 'BLOCK1' I am running as = ${USER} BLOCK1 cat << "BLOCK2" I am running as = ${USER} BLOCK2 cat << \BLOCK3 I am running as = ${USER} BLOCK3
ஹெரெடோக்கின் கட்டமைப்பையும் அது எவ்வாறு இயங்குகிறது என்பதையும் இப்போது நாம் அறிந்திருக்கிறோம், சில எடுத்துக்காட்டுகளைப் பார்ப்போம். நான் ஹெரெடோக்கைப் பயன்படுத்தும் இரண்டு பொதுவான பகுதிகள் SSH வழியாக கட்டளைகளின் தொகுப்பை இயக்குகின்றன மற்றும் SQL வினவல்களை ஹெரடோக் வழியாக அனுப்புகின்றன.
கீழேயுள்ள எடுத்துக்காட்டில், தொலைநிலை சேவையகத்தில் குறியீட்டின் தொகுப்பை SSH மூலம் இயக்க முயற்சிக்கிறோம்.
கீழேயுள்ள எடுத்துக்காட்டில், ஒரு தரவுத்தளத்துடன் இணைக்க மற்றும் வினவலை இயக்க நான் தேர்ந்தெடுக்கப்பட்ட அறிக்கையை psql க்கு அனுப்புகிறேன். .Sql கோப்பை இயக்க -f
கொடியைப் பயன்படுத்துவதற்குப் பதிலாக, பாஷ் ஸ்கிரிப்டுக்குள் psql இல் வினவலை இயக்க இது ஒரு மாற்று வழியாகும்.
#!/usr/bin/env bash UNAME=postgres DBNAME=testing psql --username=${UNAME} --password --dbname=${DBNAME} << BLOCK SELECT * FROM COUNTRIES WHERE region_id = 4; BLOCK
இந்த கட்டுரைக்கு அதுதான். நாங்கள் எடுத்துக்காட்டுகளில் காட்டியதை ஒப்பிடும்போது ஹெரெடோக்கால் நீங்கள் இன்னும் நிறைய செய்ய முடியும். ஹெரடோக் உடன் உங்களுக்கு ஏதேனும் பயனுள்ள ஹேக் இருந்தால், தயவுசெய்து அதை கருத்துப் பிரிவில் இடுங்கள், இதனால் எங்கள் வாசகர்கள் பயனடையலாம்.