Shell Scripting -ב Heredoc -ב שמתשהל דציכ


.heredoc -ב םג תוכמות Perl, Ruby, PHP ומכ תורחא תונכת תופשש ןייצל שי .sh, tcsh, ksh, bash, zsh, csh ומכ תוירלופופ סקוניל תויכנוקב ותוא אוצמל ןתינו UNIX תויכנוקב Heredoc רוקמ .דוביעל הדוקפל

קודרה הנבמ

.דוק שוגכ בשחנ םחותל סנכנש המ לכ .דוקה שוג םויסל שמשי םוחית ןומיסא ותוא .םוחית ןומיסא םהירחאו (<<) םייתיווז םיירגוס יתשב שמתשמ קודרה

."BLOCK" ותוא ידי לע םייתסמו "BLOCK" -כ רדגומ דירפמה ןאכ .לותחה תדוקפל דוקה שוג תא הנפמ ינא .הטמל המגודב ןייע

cat << BLOCK
	Hello world
	Today date is $(date +%F)
	My home directory = ${HOME}
BLOCK

.המיסחה תא םייסלו המיסחה תא ליחתהל ידכ דירפמ ןומיסא ותואב שמתשהל ךילע :הרעה

תורוש תובורמ תורעה רוצ

.הז לע רבגתהל ידכ HereDoc -ב שמתשהל לוכי התא .Java וא C ומכ תורוש תובורמ תובוגתב ךמות וניא לדחמ תרירבכ bash -ש עדוי התאש ןכתיי ,וישכע bash -ב והשיתמ דדוקמ התא םא

.רבד עצבי אלו דוקה שוג תא ארקי טושפ ןמגרותמה ,יהשלכ הדוקפל heredoc הנפמ ךניא םא .הצירפ קר אלא ,תורוש תובורמ תובוגתב ךמותה bash לש תינבומ הנוכת אל וז

<< 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

ידוקיפו הנתשמ ףילחת

Heredoc םייתביבס םינתשמ וא שמתשמה ידי לע םירדגומה םינתשמ תויהל םילוכי םינתשמ .הנתשמ הפלחה לבקמ.

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

.heredoc דוק קולב ךותב הדוקפ לכ ליעפהל לכות ,המוד ןפואב

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

.heredoc ךרד SQL תותליאש םיריבעמו SSH לע תודוקפ שוג םיצירמ heredoc -ב שמתשמ ינא םהבש םיצופנ םירוזא ינש .תואמגוד המכ הארנ ואוב ,לעופ אוה דציכו קודרה הנבמ תא םיעדוי ונאשכ ,תעכ

.SSH תועצמאב קחורמ תרשב דוק קולב עצבל םיסנמ ונא ,ןלהלש המגודב

.SQL ץבוק תלעפהל -f לגדב שמתשהל םוקמב script bash ךותב psql -ב התליאש ץירהל תיפולח ךרד יהוז .התליאשה תא ץירהלו םינותנ דסמל רבחתהל ידכ psql -ל הרחבנ הרהצה ריבעמ ינא ןלהלש המג

#!/usr/bin/env bash

UNAME=postgres
DBNAME=testing

psql --username=${UNAME} --password --dbname=${DBNAME} << BLOCK
SELECT * FROM COUNTRIES
WHERE region_id = 4;
BLOCK

.ךכמ תונהיל ולכוי וניארוקש ידכ תורעהה ףיעסב התוא םסרפ אנא heredoc םע תישומיש הצירפ ךל שי םא .תואמגודב ונארהש המל האוושהב heredoc םע רתוי הברה תושעל רשפא .הז רמאמ רובע הז והז


כל הזכויות שמורות. © Linux-Console.net • 2019-2024