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 םע רתוי הברה תושעל רשפא .הז רמאמ רובע הז והז