Sto aggiungendo una funzionalità a uno script esistente che consentirà all'utente di configurare il nome host di un sistema Linux. Le regole Sto far rispettare sono i seguenti:Come posso garantire che una stringa Bash sia alfanumerica, senza un carattere di sottolineatura?
- deve essere compresa tra 2 e 63 caratteri
- non devono iniziare o terminare con un trattino
- può contenere solo caratteri alfanumerici e trattini; tutti gli altri caratteri non sono consentiti (tra cui una sottolineatura, il che significa che non posso utilizzare il simbolo \ W regex)
Ho risolto i primi due della lista, ma sto avendo difficoltà a capire come per verificare se una stringa bash contiene solo lettere, cifre e trattini. Penso di poterlo fare con una regex, ma non riesco a capire come (ho passato l'ora passata a cercare sul web e leggere le pagine man).
Sono aperto all'utilizzo di sed, grep o degli altri strumenti standard, ma non di Perl o Python.
Come si usa la seconda espressione con grep? Sto cercando interruttori nella pagina man ma senza successo: sto facendo eco a una stringa che dovrebbe corrispondere e non viene prodotto nulla. –
@Montecristo: 'grep -E' o' egrep' – Welbog
L'ho provato con questo: echo 1asdas * _- | grep -E '^ [[: alnum:]] [- [: alnum:]] {0,61} [[: alnum:]] $', senza output (anche senza virgolette singole), lol dovrei chiedere a domanda penso ...: P –