Hvordan bruker jeg: cat < < EOF [duplikat]

Dette spørsmålet har allerede svar her :

Kommentarer

  • Slik det står, trenger skriptet et tilbud " etter Thanks, å avslutte strengen.
  • Takk steve for tilbakemeldingen, ja jeg savnet sitatene. Kan du vennligst guide meg litt om katten < < EOF-tillegg til skriptet mitt?
  • << EOF thingy kalles et " her dokument ". Se her , her og her . Jeg ' er ikke sikker på hva du spør om de to dusin linjene med skallskript, så jeg kan ' t kommentere det.
  • Hvis du ' skal henvise folk til referanser, kan du peke dem til denne .

Svar

<< er heredoc. Alt som følger << fungerer som skilletegn for heredoc

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

Enter

Så hvis du vil lagre de tre linjene til en variabel, gjør det som nedenfor:

fra kommandolinjen

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

Enter

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

fra innsiden av skriptet

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

Kommentarer

  • så jeg kan gjøre DU_RESULTS_HOME = " $ (cat < < EOF sudo -u hdfs hadoop fs -du -s / user / * | sort -r -k 1 -g | awk ' {suffiks = " KMGT "; for (i = 0; $ 1 > 1024 & & i < lengde (suffiks); i ++) $ 1 / = 1024; skrive ut int ($ 1) substr (suffiks, i, 1), $ 3; } ' | head -n 22 | awk ' {print $ 1 " \ t \ t \ t " $ 2} ') sudo -u hdfs hadoop fs -df -h / bruker EOF) "
  • << er ment for strenger som jeg ' har demonstrert, ikke kommandoer. Vil du utføre høye kommandoer og lagre resultatene til DU_RESULTS_HOME?
  • nei, så i skriptet mitt bruker jeg så mange variabler, så jeg prøver å lære katten < < eof teknikk for å redusere antall variabler .. og sannsynligvis unngå å bruke utskriftsformat, som er 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 " " $ DU_RESULTS_HOME " | / bin / mail -s " $ MESSAGE_SUBJECT " -r " $ MESSAGE_SENDER " " $ MESSAGE_EMAIL "

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *