Yadda ake amfani da Heredoc a cikin rubutun Shell
Anan daftarin aiki (Heredoc) shigarwa ce ko madaidaiciyar fayil wacce aka kula da ita azaman keɓaɓɓen toshe na lambar. Wannan toshe lambar za a wuce zuwa umarni don aiki. Heredoc ya samo asali ne daga baƙon UNIX kuma ana iya samun sa a cikin sanannun bawo na Linux kamar sh, tcsh, ksh, bash, zsh, csh. Hakanan, sauran yarukan shirye-shirye kamar Perl, Ruby, PHP suma suna tallafawa heredoc.
Tsarin Herdoc
Heredoc yana amfani da ƙusoshin kusurwa 2 (<<)
sannan alamar ƙa'ida. Za a yi amfani da alamar alamar iyaka don dakatar da toshe lambar. Duk abin da ya zo a cikin iyakance ana ɗaukar shi a matsayin toshe lambar.
Duba misalin da ke ƙasa. Ina tura hanyar toshe lambar zuwa umarnin kyanwa. Anan an saita mai iyakancewa zuwa "BLOCK" kuma an dakatar dashi ta hanyar "BLOCK" din.
cat << BLOCK Hello world Today date is $(date +%F) My home directory = ${HOME} BLOCK
SAURARA: Yakamata kayi amfani da alamar alamar iyaka don fara toshewar da dakatar da toshewar.
Commentsirƙiri Sharhi na Multiline
Idan kuna yin lamba wani lokaci a cikin bash yanzu, ƙila ku sani bash ta tsohuwa baya tallafawa maganganun multiline kamar C ko Java. Kuna iya amfani da HereDoc don shawo kan wannan.
Wannan ba fasalin ginannen bash bane wanda yake tallafawa maganganun layuka da yawa, amma kawai haƙiƙa. Idan baku turawa heredoc zuwa kowane umarni ba, mai fassarar zai karanta kawai toshe lambar kuma ba zai aiwatar da komai ba.
<< COMMENT This is comment line 1 This is comment line 2 This is comment line 3 COMMENT
Karɓar Filayen Fari
Ta hanyar tsoho, heredoc ba zai murkushe duk wani farin harafin sarari ba (shafuka, sarari). Zamu iya shawo kan wannan ɗabi'ar ta hanyar ƙara dash (-)
bayan (<<)
sai kuma wani iyaka. Wannan zai danne duk wuraren tab amma ba za a murkushe fararen wurare ba.
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
Canji da Dokar Sauyawa
Heredoc ya yarda da sauya canji. Sauye-sauye na iya zama ƙayyadaddun masu amfani ko masu canjin yanayi.
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
Hakanan, zaku iya gudanar da kowane umarni a cikin toshe lambar heredoc.
cat << BLOCK2 $(uname -a) BLOCK2
Tserewa Masu Musamman
Akwai hanyoyi da yawa da zamu iya tserewa haruffa na musamman. Ko dai zaka iya yi a matakin hali ko matakin doc.
Don tserewa halaye na musamman na mutum amfani da juyawar baya (\).
cat << BLOCK4 $(uname -a) BLOCK4 cat << BLOCK5 Today date is = ${TODAY} BLOCK5
Don tserewa duk wasu haruffa na musamman a cikin toshe suna kewaye da iyakancin tare da maganganu guda ɗaya, maganganu biyu, ko prefix delimiter tare da juya baya.
cat << 'BLOCK1' I am running as = ${USER} BLOCK1 cat << "BLOCK2" I am running as = ${USER} BLOCK2 cat << \BLOCK3 I am running as = ${USER} BLOCK3
Yanzu da yake mun san tsarin heredoc da yadda yake aiki, bari mu ga examplesan misalai. Yankuna guda biyu na gama gari wanda nake amfani da heredoc suna tafiyar da wani tsari na umarni akan SSH da wucewar tambayoyin SQL ta hanyar heredoc.
A cikin misalin da ke ƙasa, muna ƙoƙarin aiwatar da toshe lambar lamba a cikin sabar ta hanyar SSH.
A cikin misalin da ke ƙasa ina wucewa da zaɓin bayani zuwa psql don haɗi zuwa bayanan bayanai da gudanar da tambayar. Wannan wata hanyace madadin don gudanar da tambaya a cikin psql a cikin rubutun bash maimakon amfani da tutar -f
don gudanar da fayil .sql.
#!/usr/bin/env bash UNAME=postgres DBNAME=testing psql --username=${UNAME} --password --dbname=${DBNAME} << BLOCK SELECT * FROM COUNTRIES WHERE region_id = 4; BLOCK
Shi ke nan ga wannan labarin. Akwai abubuwa da yawa da zaku iya yi tare da heredoc idan aka kwatanta da abin da muka nuna a cikin misalai. Idan kuna da wani ɗan amfani mai amfani tare da heredoc don Allah sanya shi a cikin ɓangaren sharhi don masu karatu su iya amfana da hakan.