Comment utiliser: cat < < EOF [duplicate]

Cette question a déjà des réponses ici :

Commentaires

  • En létat, le script a besoin dune citation " après Thanks, pour terminer la chaîne.
  • Merci steve pour les commentaires, oui jai manqué les citations. Pouvez-vous sil vous plaît me guider un peu sur lajout de cat < < EOF à mon script?
  • Le << EOF thingy est appelé un " ici document ". Voir ici , ici et ici . ' ne sais pas ce que vous demandez à propos de ces deux douzaines de lignes de script shell, donc je peux ' faire des commentaires à ce sujet.
  • Si vous ' allez diriger des personnes vers des références, veuillez les diriger vers celle-ci .

Réponse

Le << est lhérédoc. Tout ce qui suit le << sert de délimiteur pour lhérédoc

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

Entrée

Donc, si vous souhaitez stocker les trois lignes dans une variable, faites-le comme ci-dessous:

depuis la ligne de commande

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

Entrez

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

depuis lintérieur du script

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

Commentaires

  • pour que je puisse faire DU_RESULTS_HOME = " $ (cat < < EOF sudo -u hdfs hadoop fs -du -s / utilisateur / * | sort -r -k 1 -g | awk ' {suffix = " KMGT "; for (i = 0; $ 1 > 1024 & & i < longueur (suffixe); i ++) $ 1 / = 1024; imprimer int ($ 1) substr (suffixe, i, 1), $ 3; } ' | head -n 22 | awk ' {print $ 1 " \ t \ t \ t " $ 2} ') sudo -u hdfs hadoop fs -df -h / utilisateur EOF) "
  • << est destiné aux chaînes comme jai ' démontré, pas aux commandes. Voulez-vous exécuter les commandes et stocker les résultats dans DU_RESULTS_HOME?
  • non, donc dans mon script jutilise tellement de variables, donc jessaye pour apprendre la technique du chat < < eof pour réduire le nombre de variables .. et éviter probablement dutiliser le format dimpression, qui est 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 "

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *