Comment puis-je m'assurer qu'un coup de chaîne est alphanumérique, sans un trait de soulignement?

Je vais ajouter une fonctionnalité à un script qui va permettre à l'utilisateur de configurer le nom d'hôte d'un système Linux. Les règles, je suis de l'application sont les suivantes:

  • Doit être comprise entre 2 et 63 caractères
  • Ne doit pas commencer ou finir par un trait d'union
  • Ne peut contenir que des caractères alphanumériques et des tirets; 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 \W regex symbole)

J'ai résolu les deux premiers dans la liste, mais je vais avoir de la difficulté à trouver comment vérifier si un bash chaîne ne contient que 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é la dernière heure de recherche sur le web et la lecture des pages de man).

Je suis ouvert à l'aide de sed, grep, ou l'un des autres outils standard, mais pas Perl ou Python.

InformationsquelleAutor Raam Dev | 2009-08-04