Je me demandais s'il y avait un moyen de commenter un ensemble de lignes dans un script Shell ... Comment puis-je faire cela? Nous pouvons utiliser/* */dans d'autres langages de programmation . Ceci est très utile lorsque je convertis/utilise/modifie un autre script Et que je veux conserver les lignes d'origine au lieu de les supprimer.
Trouver et préfixer # pour toutes les lignes qui ne sont pas utilisées semble compliqué.
Disons qu'il y a 100 lignes dans le script dans des lignes conséquentes qui ne doivent pas être utilisées ..__ Je veux les commenter en une fois. Est-ce possible?
if false
then
...code...
fi
false
renvoie toujours false, donc le code sera toujours ignoré.
La méthode la plus polyvalente et la plus sûre consiste à mettre le commentaire dans un vide cité here-document
, comme ceci:
<<"COMMENT"
This long comment text includes ${parameter:=expansion}
`command substitution` and $((arithmetic++ + --expansion)).
COMMENT
Il est nécessaire de citer le délimiteur COMMENT
ci-dessus pour empêcher le développement du paramètre , Le remplacement des commandes et le développement arithmétique, ce qui se produirait sinon, comme Bash manuel États et POSIX Shell standard spécifie .
Dans le cas ci-dessus, ne pas citer COMMENT
aurait pour résultat que la variable parameter
.__ serait affectée au texte expansion
, si elle était vide ou non définie, en exécutant la commande command substitution
, incrémentant la variable arithmetic
et décrémentant .expansion
variable__.
En comparant d'autres solutions à ceci:
Pour utiliser if false; then comment text fi
, le texte du commentaire doit être Syntaxiquement correct, alors que les commentaires naturels ne le sont souvent pas, si Uniquement pour d'éventuelles apostrophes non équilibrées. Il en va de même pour : || { comment text }
Construct.
Le fait de placer des commentaires dans un argument de commande vide entre guillemets, comme dans :'comment
text'
, présente l'inconvénient d'incapacité à inclure des apostrophes. Les arguments Entre guillemets, comme dans :"comment text"
, sont toujours sujets à l’extension des paramètres, au remplacement de la commande .__ et à l’extension arithmétique, de la même manière que le contenu non mis entre guillemets Here et peuvent avoir les effets secondaires décrits plus haut.
L'utilisation de scripts et de fonctions d'éditeur pour préfixer automatiquement chaque ligne d'un bloc Avec un '#' a du mérite, mais ne répond pas exactement à la question.
Vous pouvez également mettre des commentaires sur plusieurs lignes en utilisant:
: '
comment1comment1
comment2comment2
comment3comment3
comment4comment4
'
Selon la référence Bash pour Bourne Shell builtins
: (deux points)
: [arguments]
Ne rien faire à part développer des arguments et effectuer des redirections. Le statut de retour est zéro.
Merci à Ikram pour l'avoir signalé dans le post Le script shell a mis plusieurs commentaires de ligne
Vous pouvez utiliser un document 'ici' sans commande pour l'envoyer.
#!/bin/bash
echo "Say Something"
<<COMMENT1
your comment 1
comment 2
blah
COMMENT1
echo "Do something else"
Les éditeurs de texte ont une fonctionnalité étonnante appelée rechercher et remplacer. Vous ne dites pas quel éditeur vous utilisez, mais comme les scripts Shell ont tendance à être * nix et que j'utilise VI, voici la commande pour commenter les lignes 20 à 50 de certains scripts Shell:
:20,50s/^/#/
: || {
your code here
your code here
your code here
your code here
}
Selon ce site :
#!/bin/bash
foo=bar
: '
This is a test comment
Author foo bar
Released under GNU
'
echo "Init..."
# rest of script
Que faire si vous emballez simplement votre code dans la fonction?
Donc ça:
cd ~/documents
mkdir test
echo "useless script" > about.txt
Devient ceci:
CommentedOutBlock() {
cd ~/documents
mkdir test
echo "useless script" > about.txt
}
Selon l'éditeur que vous utilisez, certains raccourcis permettent de commenter un bloc de lignes.
Une autre solution consiste à placer votre code dans un bloc conditionnel "if (0)";)