J'aimerais savoir ce que signifient le moins (-) et l'EOC dans la commande ci-dessous. Je sais que certains langages comme Perl vous permettent de choisir n'importe quelle combinaison de caractères (non liés à EOF) mais est-ce le cas ici ? Et le moins est un mystère complet pour moi. Merci d'avance !
ftp -v -n $SERVER >> $LOG_FILE <<-EOC
user $USERNAME $PWD
binary
cd $DIR1
mkdir $dir_lock
get $FILE
bye
EOC
Réponse acceptée :
C'est un document ici.
command <<-word
here-document contents
word
Le word
utilisé pour délimiter le ici-document est arbitraire, il est courant, mais pas nécessaire, d'utiliser un mot en majuscule.
Le -
en <<-word
a pour effet que les tabulations seront supprimées à partir du début de chaque ligne dans le contenu du document ici.
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
Si le document ici ci-dessus était écrit avec des tabulations littérales au début de chaque ligne, cela donnerait la sortie
hello
world
plutôt que
hello
world
Les onglets avant le délimiteur de fin sont également supprimés avec <<-
(mais pas sans les -
):
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
(même sortie)