Dodaję funkcję do istniejącego skryptu, który pozwoli użytkownikowi skonfigurować nazwę hosta systemu Linux. Zasady ja wymuszające są następujące:Jak mogę zapewnić ciąg alfanumeryczny bez znaku podkreślenia?
- musi wynosić między 2 a 63 znaków
- nie może rozpoczynać się ani kończyć myślnikiem
- może zawierać tylko znaki alfanumeryczne i łączniki; wszystkie inne znaki są niedozwolone (w tym podkreślenie, co oznacza, że nie mogę używać symbolu regex \ W).
Rozwiązałem dwa pierwsze na liście, ale mam problem z ustaleniem, w jaki sposób aby sprawdzić, czy łańcuch bash zawiera tylko litery, cyfry i łączniki. Myślę, że mogę to zrobić za pomocą regexu, ale mam problem z ustaleniem, w jaki sposób (spędziłem ostatnią godzinę przeszukując sieć i czytając strony man).
Jestem otwarty na użycie sed, grep lub dowolnego innego standardowego narzędzia, ale nie Perl czy Python.
Jak używać drugie wyrażenie z grep? Poszukuję przełączników na stronie podręcznika, ale bez powodzenia: powtarzam ciąg znaków, który powinien się zgadzać i nic nie jest wyprowadzane. –
@Montecristo: 'grep -E' lub' egrep' – Welbog
Próbowałem go z tym: echo 1asdas * _- | grep -E '^ [[:: alnum:]] [- [: alnum:]] {0,61} [[: alnum:]] $', bez danych wyjściowych (również bez pojedynczych cudzysłowów), lol powinienem zapytać pytanie myślę, że ...: P –