Hur använder jag: cat < < EOF [duplikat]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Denna fråga har redan svar här :

Kommentarer

  • Som det är nu behöver skriptet ett citat " efter Thanks, för att avsluta strängen.
  • Tack Steve för återkopplingen, ja jag saknade offerten. Kan du snälla vägleda mig lite om katt < < EOF tillägg till mitt skript?
  • << EOF sak kallas en " här dokument ". Se här , här och här . Jag ' är inte säker på vad du frågar om dessa två dussin rader med skalskript, så jag kan ' t kommentera det.
  • Om du ' ska peka på referenser, vänligen peka dem på den här .

Svar

<< är heredoc. Allt som följer << fungerar som avgränsare för heredoc

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

Enter

Så om du vill lagra de tre raderna till en variabel gör det som nedan:

från kommandoraden

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

Enter

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

inifrån skriptet

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

Kommentarer

  • så att jag kan göra DU_RESULTS_HOME = " $ (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ängd (suffix); i ++) $ 1 / = 1024; tryck int ($ 1) substr (suffix, i, 1), $ 3; } ' | head -n 22 | awk ' {print $ 1 " \ t \ t \ t " $ 2} ') sudo -u hdfs hadoop fs -df -h / user EOF) "
  • << är avsedd för strängar som jag ' har visat, inte kommandon. Vill du utföra höga kommandon och lagra resultaten till DU_RESULTS_HOME?
  • nej, så i mitt skript använder jag så många variabler, så jag försöker för att lära katten < < eof teknik för att minska antalet variabler .. och förmodligen undvika att använda utskriftsformat, vilket är 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 "

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *