J'ajoute une fonctionnalité à un script existant qui permettra à l'utilisateur de configurer le nom d'hôte d'un système Linux. Les règles que je suis sont les suivantes faire respecter:Comment puis-je m'assurer qu'une chaîne Bash est alphanumérique, sans trait de soulignement?
- doit être comprise entre 2 et 63 caractères
- ne doit pas commencer ou se terminer par un trait d'union
- peut contenir que des caractères alphanumériques et traits d'union; Tous les autres caractères ne sont pas autorisés (y compris un trait de soulignement, ce qui signifie que je ne peux pas utiliser le symbole \ W regex)
J'ai résolu les deux premiers caractères de la liste, mais je n'arrive pas à comprendre comment pour vérifier si une chaîne bash contient uniquement des lettres, des chiffres et des tirets. Je pense que je peux le faire avec une regex, mais j'ai du mal à comprendre comment (j'ai passé l'heure passée à chercher sur le web et à lire des pages de manuel).
Je suis ouvert à l'utilisation de sed, grep ou de n'importe quel autre outil standard, mais pas Perl ou Python.
Comment utilisez-vous la deuxième expression avec grep? Je cherche des commutateurs dans la page de manuel mais sans succès: je fais écho à une chaîne qui devrait correspondre et rien n'est produit. –
@Montecristo: 'grep -E' ou' egrep' – Welbog
Je l'ai essayé avec ceci: echo 1asdas * _- | grep -E '^ [[alnum:]] [- [: alnum:]] {0,61} [[: alnum:]] $', sans sortie (aussi sans guillemets simples), lol je devrais demander à un question je pense ...: P –