Wie verwende ich: cat < < EOF [Duplikat]

Diese Frage hat hier bereits Antworten :

Kommentare

  • Derzeit benötigt das Skript ein Anführungszeichen " nach Thanks, um die Zeichenfolge zu beenden.
  • Danke Steve für das Feedback, ja, ich habe die Anführungszeichen verpasst. Können Sie mir bitte ein wenig über cat < < EOF-Ergänzung zu meinem Skript erzählen?
  • Die << EOF Ding wird als " bezeichnet. Dokument ". Siehe hier , hier und hier . Ich ' bin mir nicht sicher, was Sie über diese zwei Dutzend Zeilen Shell-Skript fragen, daher kann ich ' dies nicht kommentieren.
  • Wenn Sie ' Personen auf Referenzen verweisen, verweisen Sie sie bitte auf diese .

Antwort

Die << ist der Heredoc. Alles, was auf die << folgt, fungiert als Trennzeichen für den Heredoc

cat <<EOF This is first line So, this is 2nd Again, another line EOF 

Enter

Wenn Sie also die drei Zeilen in einer Variablen speichern möchten, gehen Sie wie folgt vor:

über die Befehlszeile

$ var="$(cat <<EOF > Bingo > Gotcha > Enough > EOF > )" 

Geben Sie

$ echo "$var" #double quotes are important Bingo Gotcha Enough 

aus dem Skript heraus

#!/bin/bash var="$(cat <<EOF Bingo Gotcha Enough EOF )" echo "$var" 

Kommentare

  • , damit ich DU_RESULTS_HOME = " $ ausführen kann (cat < < EOF sudo -u hdfs hadoop fs -du -s / user / * | sort -r -k 1 -g | awk ' {Suffix = " KMGT "; für (i = 0; $ 1 > 1024 & & i < Länge (Suffix); i ++) $ 1 / = 1024; print int ($ 1) substr (Suffix, i, 1), $ 3; } ' | head -n 22 | awk ' {print $ 1 " \ t \ t \ t " $ 2} ') sudo -u hdfs hadoop fs -df -h / Benutzer EOF) "
  • << ist für Zeichenfolgen gedacht, die ich ' demonstriert habe, nicht für Befehle. Möchten Sie die Befehle hoch ausführen und die Ergebnisse in DU_RESULTS_HOME speichern?
  • Nein, also verwende ich in meinem Skript so viele Variablen, also versuche ich es um die cat < < Technik zu erlernen, um die Anzahl der Variablen zu reduzieren .. und wahrscheinlich die Verwendung des Druckformats zu vermeiden, das printf '% s \ n \ n \ n \ n% s \ n \ n% s \ n% s \ n \ n \ n \ n \ n% s \ n% s \ n % s ' " $ MESSAGE_BODY " " $ DF_RESULTS_HOME " " $ DU_RESULTS_HEADER_USER " iv id = „9ec74a57a2

$ DU_RESULTS_HOME " | / bin / mail -s " $ MESSAGE_SUBJECT " -r " $ MESSAGE_SENDER " " $ MESSAGE_EMAIL "

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.