15 votes

Comment utiliser un heredoc à l'intérieur d'une fonction bash ?

Est-il possible d'insérer un heredoc à l'intérieur d'une fonction bash ?

L'exemple trivial ci-dessous entraîne une erreur : ./heredoc_in_function.sh: 10: Erreur de syntaxe: fin de fichier inattendue (en attente de "}")

#!/bin/sh

my_function () {
cat <

`

Environnement :

  • Ubuntu 11.04 (GNU/Linux 2.6.38-8-server x86_64)
  • GNU bash, version 4.2.8(1)-release (x86_64-pc-linux-gnu)

`

11voto

user6779 Points 557

Votre code semblait bon pour moi, donc je l'ai copié ligne par ligne et ça a fonctionné pour moi sur :

  • OSX 10.7, bash 3.2.48(1)-release (x86_64-apple-darwin11).
  • Ubuntu 10.04.3, bash 4.1.5(1)-release (x86_64-pc-linux-gnu)

Serait-il possible pour vous de retaper le fichier à la main juste pour vous assurer que vous ne manquez pas ou n'ajoutez pas d'espaces/onglets, etc. ?

Aussi, comment l'exécutez-vous ? J'ai fait un chmod +x test.sh puis ./test.sh

EDIT : J'ai reçu la même erreur que vous lorsque j'ai ajouté un espace au début de la ligne avec le HEREDOC de fermeture.

Note supplémentaire : Un espace final derrière le HEREDOC de fermeture peut également causer cela

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X