תוכן עניינים:
כשאתה כותב סקריפטים של מעטפת אתה עלול להיות במצב שאתה צריך להעביר גוש טקסט או קוד רב שכבתי לפקודה אינטראקטיבית, כגון
tee
,
cat
או
sftp
.
בבאש ופגזים אחרים כמו Zsh, מסמך Here (Heredoc) הוא סוג של ניתוב מחדש המאפשר לך להעביר מספר שורות קלט לפקודה.
התחביר של כתיבת HereDoc לובש את הצורה הבאה:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- השורה הראשונה מתחילה בפקודה אופציונלית ואחריה מפעיל ההפניה המיוחד
<<
ומזהה התוחם.- אתה יכול להשתמש בכל מחרוזת כמזהה תוחם, הנפוצה ביותר היא EOF או END. אם מזהה התוחם אינו מצוטט, הקליפה תחליף את כל המשתנים, הפקודות והתווים המיוחדים לפני שתעביר את שורות המסמך כאן לפקודה. סימן מינוס למפעיל ההפניה
<<-
, יגרום להתעלמות מכל תווי הכרטיסיות המובילות. זה מאפשר לך להשתמש בכניסה ככתיבת מסמכים כאן בסקריפטים של מעטפת. חל איסור על תווים מרווחים מובילים, רק בכרטיסייה.
- אתה יכול להשתמש בכל מחרוזת כמזהה תוחם, הנפוצה ביותר היא EOF או END. אם מזהה התוחם אינו מצוטט, הקליפה תחליף את כל המשתנים, הפקודות והתווים המיוחדים לפני שתעביר את שורות המסמך כאן לפקודה. סימן מינוס למפעיל ההפניה
דוגמאות הרדוק בסיסיות
בחלק זה, נסקור כמה דוגמאות בסיסיות לשימוש ב- Heredoc.
הרדוק משמש לרוב בשילוב עם פקודת החתול.
בדוגמה הבאה אנו מעבירים שתי שורות של טקסט המכילות משתנה סביבתי ופקודה
cat
באמצעות מסמך כאן.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
כפי שניתן לראות מהפלט למטה, הן המשתנה והן פלט הפקודה מוחלפים:
The current working directory is: /home/linuxize You are logged in as: linuxize
בוא נראה מה יקרה אם נסגור את התוחם בציטוטים יחידים או כפולים.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
אתה יכול לשים לב שכאשר מצוטט את התוחם, לא מתרחשת הרחבת פרמטר והחלפת פקודות על ידי הקליפה.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
במקום להציג את הפלט על המסך, תוכלו להפנות אותו לקובץ באמצעות המפעילים
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
אם file.txt לא קיים הוא ייווצר. בעת שימוש ב-
>
הקובץ יוחלף, בעוד ש-
>>
יוסיף את הפלט לקובץ.
ניתן לצרף גם את קלט ההרדוק. בדוגמה הבאה הפקודה
sed
תחליף את כל המופעים של הדמות
l
ב-
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
כדי לכתוב את הנתונים בצנרת לקובץ:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
באמצעות Heredoc עם SSH
השימוש ב- Heredoc הוא אחת הדרכים הנוחות והקלות ביותר לבצע פקודות מרובות במערכת מרוחקת באמצעות SSH.
בעת שימוש במתחם לא מצוטט ודא שאתה בורח מכל המשתנים, הפקודות והתווים המיוחדים, אחרת הם יוחזרו באופן מקומי:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
יתכן שתרצה להגדיר אימות מבוסס מפתח SSH ולהתחבר לשרתי Linux שלך בלי להזין סיסמה.
סיכום
במדריך זה למדת מה זה
heredoc
וכיצד להשתמש בו בתסריטים של הקונכיות שלך.
מיקרוסופט מחקר אסיה המארחים שערים ב 10 שנה Bash

מיקרוסופט מחקר אסיה גדלה מתריסר אנשים בשנת 1998 ליותר מ 350 שנה מאוחר יותר.
כיצד לבדוק אם קיים קובץ או ספרייה ב- bash

פעמים רבות בעת כתיבת סקריפטים של Shell, אתה עלול למצוא את עצמך במצב שאתה צריך לבצע פעולה על סמך האם קיים קובץ או לא. באש אתה יכול להשתמש בפקודת הבדיקה כדי לבדוק אם קיים קובץ ולקבוע את סוג הקובץ.
Bash if..else הצהרה

קבלת החלטות היא אחד המושגים הבסיסיים ביותר בתכנות מחשבים. כמו בכל שפת תכנות אחרת, אם, אם..else, אם..elif..else וקינן אם ניתן להשתמש בהצהרות בבאש לביצוע קוד בהתבסס על תנאי מסוים.