Otu esi eji Heredoc na Shell Scripting
Akwụkwọ a (Heredoc) bụ ntinye ma ọ bụ iyi faịlụ nkịtị nke a na-ewere dị ka ngọngọ koodu pụrụ iche. A ga-ebufe ngọngọ koodu a na iwu maka nhazi. Heredoc sitere na shei UNIX ma enwere ike ịchọta ya na shei Linux na-ewu ewu dị ka sh, tcsh, ksh, bash, zsh, csh. N'ụzọ doro anya, asụsụ mmemme ndị ọzọ dị ka Perl, Ruby, PHP na-akwado heredoc.
Ọdịdị nke Herdoc
Heredoc na-eji akara aka akụkụ abụọ (<<)
na-esochi akara nbibi. A ga-eji otu akara mmachi ahụ kwụsịtụ ngọngọ koodu. Ihe ọ bụla na-abịa n'ime ihe nchapụta a na-ewere dị ka ngọngọ koodu.
Lee ihe atụ n'okpuru. Ana m atụgharị ngọngọ koodu gaa na iwu pusi. N'ebe a ka edobere ihe nhụsianya ka ọ bụrụ Mgbochi wee kwụsị ya site na otu BLOCK.
cat << BLOCK Hello world Today date is $(date +%F) My home directory = ${HOME} BLOCK
IHE: Ị ga-eji otu ihe mgbochi ahụ malite ngọngọ wee kwụsị ngọngọ ahụ.
Mepụta nzaghachi multiline
Ọ bụrụ na ị na-etinye koodu oge ụfọdụ na bash ugbu a, ị nwere ike ịmara na bash na ndabara anaghị akwado okwu multiline dị ka C ma ọ bụ Java. Ị nwere ike iji HereDoc imeri nke a.
Nke a abụghị atụmatụ arụnyere n'ime bash na-akwado ikwu ọtụtụ ahịrị, kama ọ bụ naanị mbanye anataghị ikike. Ọ bụrụ na ị naghị atụgharị heredoc na iwu ọ bụla, onye ntụgharị okwu ga-agụ naanị ngọngọ koodu ma ọ gaghị eme ihe ọ bụla.
<< COMMENT This is comment line 1 This is comment line 2 This is comment line 3 COMMENT
Ijikwa oghere ọcha
Site na ndabara, heredoc agaghị egbochi mkpụrụedemede oghere ọ bụla (taabụ, oghere). Anyị nwere ike ịkagbu omume a site n'ịgbakwunye dash (-)
ka (<<)
sochiri ya. Nke a ga-egbochi oghere taabụ niile mana a gaghị egbochi oghere ọcha.
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
Mgbanwe na ngbanwe Iwu
Heredoc na-anabata ngbanwe agbanwe. Mgbanwe nwere ike ịbụ mgbanwe akọwapụtara nke onye ọrụ ma ọ bụ mgbanwe gburugburu ebe obibi.
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
N'otu aka ahụ, ịnwere ike ịme iwu ọ bụla n'ime ngọngọ koodu heredoc.
cat << BLOCK2 $(uname -a) BLOCK2
Agbanarị agwa pụrụiche
Enwere ụzọ dị iche iche anyị nwere ike isi gbanarị mkpụrụedemede pụrụ iche. Ma ị nwere ike ime ya na ọkwa agwa ma ọ bụ ọkwa doc.
Iji gbanarị mkpụrụedemede pụrụ iche n'otu n'otu jiri azụ azụ (\).
cat << BLOCK4 $(uname -a) BLOCK4 cat << BLOCK5 Today date is = ${TODAY} BLOCK5
Iji gbanarị mkpụrụedemede pụrụ iche niile dị n'ime mgbochi ahụ jiri otu nturuugo, nkwuta okwu abụọ ma ọ bụ prefix delimiter jiri njakịrị azụ gbachie ihe nkpuchi ahụ.
cat << 'BLOCK1' I am running as = ${USER} BLOCK1 cat << "BLOCK2" I am running as = ${USER} BLOCK2 cat << \BLOCK3 I am running as = ${USER} BLOCK3
Ugbu a anyị maara usoro nke heredoc na otu o si arụ ọrụ, ka anyị hụ ihe atụ ole na ole. Ebe abụọ a na-ahụkarị ebe m na-eji heredoc na-agba ọsọ nke iwu n'elu SSH ma na-agafe ajụjụ SQL site na heredoc.
N'ihe atụ dị n'okpuru, anyị na-agbalị ime ka ngọngọ koodu dị na sava dịpụrụ adịpụ site na SSH.
N'ihe atụ dị n'okpuru, m na-enyefe nkwupụta ahọpụtara na psql iji jikọọ na nchekwa data wee mee ajụjụ a. Nke a bụ ụzọ ọzọ isi mee ajụjụ na psql n'ime edemede bash kama iji ọkọlọtọ -f
iji mee faịlụ .sql.
#!/usr/bin/env bash UNAME=postgres DBNAME=testing psql --username=${UNAME} --password --dbname=${DBNAME} << BLOCK SELECT * FROM COUNTRIES WHERE region_id = 4; BLOCK
Nke ahụ bụ maka akụkọ a. Enwere ọtụtụ ihe ọzọ ị nwere ike ime na heredoc ma e jiri ya tụnyere ihe anyị gosiri na ihe atụ. Ọ bụrụ na ị nwere mbanye anataghị ikike ọ bụla bara uru na heredoc biko biputere ya na ngalaba nkọwa ka ndị na-agụ akwụkwọ anyị wee rite uru na nke ahụ.