Comment cat <<EOF >> un fichier contenant du code?

Je veux imprimer le code dans un fichier à l'aide de cat <<EOF >>:

cat <<EOF >> brightup.sh
!/bin/bash
curr=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ $curr -lt 4477 ]; then
   curr=$((curr+406));
   echo $curr  > /sys/class/backlight/intel_backlight/brightness;
fi
EOF

mais lorsque je vérifie le fichier de sortie, j'obtiens ceci:

!/bin/bash
curr=1634
if [  -lt 4477 ]; then
   curr=406;
   echo   > /sys/class/backlight/intel_backlight/brightness;
fi

J'ai essayé de mettre des guillemets simples, mais la sortie porte également les guillemets simples avec elle. Comment puis-je éviter ce problème?

  • Vous devez également fixer le shebang. La première ligne doit être littéralement #!/bin/bash et rien d'autre -- le #! est ce qu'il fait dans un valide ligne shebang, et ce qui vient après c'est le chemin vers l'interpréteur.
  • voir man bash, et la recherche de Here Documents. Tous les détails.
  • Comme un retard de côté, la syntaxe moderne pour le processus de substitution est $(command) au lieu de `command`. Pour obtenir le contenu d'un fichier, Bash a $(<file)
InformationsquelleAutor UberNate | 2014-03-27