Qu’est ce que c’est EOF !! dans le script bash?

Il y a une commande que je ne comprends pas:

custom_command << EOF!! 

Je veux demander ce que EOF !! est dans le script bash. J’ai trouvé EOF avec google, mais google va ignorer le “!!” automatiquement, donc je ne peux pas trouver EOF !!.

Je connais la fin du jeton de fichier, mais je ne sais pas exactement ce que cela signifie avec le “!!” dans le script. Est-ce une marque pour forcer quelque chose à faire quelque chose comme dans le wim de vim! ?

De plus, pourquoi et quand devrions-nous utiliser EOF !! au lieu de EOF?

Sur la ligne de commande, !! serait étendu à la dernière commande exécutée. Bash imprimera la ligne pour vous:

 $ ls a.txt b.txt $ cat < 

Dans un script, cependant, l’expansion de l’historique est désactivée par défaut, de sorte que les points d’exclamation font partie du mot.

 #! /bin/bash ls cat < 

Produit:

 a.txt b.txt script.sh: line 7: warning: here-document at line 3 delimited by end-of-file (wanted `EOF!!') echo 1 EOFls echo 2 

Pour activer l'expansion de l'historique et de l'historique dans un script, ajoutez les lignes suivantes:

 set -o history set -H 

Vous pouvez utiliser n’importe quelle chaîne comme ici le terminateur de document.

EOF!! est juste ce que la personne qui écrit le script a décidé d’utiliser.

C’est probablement juste un heredoc étrange.

Exemple:

 cat << EOF!! blabla EOF!! 

Remarque: cela ne fonctionne que dans les fichiers de script. L'parsingur de ligne de commande interprète !! .

Comme d’autres l’ont déjà écrit, il s’agit d’un document ici.

Le jeton utilisé pour cela devrait être choisi avec soin; comme la probabilité que le document ici contient EOF!! est plus faible que pour EOF lui-même, ils l’ont choisi.

Je suppose qu’ils ont vérifié qu’il ne fait pas de mal avant de l’utiliser. !! dans un script ne se réfère pas à l’histoire, mais il rest tel quel.

Le manuel bash énumère ceci sous “Indicateurs d’événement” , en disant:

!!

Reportez-vous à la commande précédente. Ceci est un synonyme pour! -1`.

J’ai simplement recherché “bash manual double exclamation”.