Hvordan bruger jeg: cat < < EOF [duplikat]

Dette spørgsmål har allerede svar her :

Kommentarer

  • Som det er tilfældet, skal scriptet have et tilbud " efter Thanks, for at afslutte strengen.
  • Tak steve for feedbacken, ja jeg savnede citaterne. Kan du venligst guide mig lidt om kat < < EOF tilføjelse til mit script?
  • << EOF ting kaldes et " her dokument ". Se her , her og her . Jeg ' er ikke sikker på, hvad du spørger om disse to dusin linjer med shell-script, så jeg kan ' t kommentere det.
  • Hvis du ' vil henvise folk til referencer, skal du rette dem til denne .

Svar

<< er heredoc. Alt, der følger << fungerer som afgrænser for heredoc

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

Enter

Så hvis du vil gemme de tre linjer til en variabel, skal du gøre det som nedenfor:

fra kommandolinjen

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

Indtast

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

indefra scriptet

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

Kommentarer

  • så jeg kan gøre DU_RESULTS_HOME = " $ (kat < < EOF sudo -u hdfs hadoop fs -du -s / user / * | sort -r -k 1 -g | awk ' {suffiks = " KMGT "; for (i = 0; $ 1 > 1024 & & i < længde (suffiks); i ++) $ 1 / = 1024; udskriv int ($ 1) substr (suffiks, i, 1), $ 3; } ' | head -n 22 | awk ' {print $ 1 " \ t \ t \ t " $ 2} ') sudo -u hdfs hadoop fs -df -h / bruger EOF) "
  • << er beregnet til strenge som jeg ' har vist, ikke kommandoer. Vil du udføre høje kommandoer og gemme resultaterne til DU_RESULTS_HOME?
  • nej, så i mit script bruger jeg så mange variabler, så jeg prøver for at lære katten < < eof teknik til at reducere antallet af variabler .. og sandsynligvis undgå at bruge udskriftsformat, 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 "

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *