Когда вы объявляете переменную, вам не нужно использовать $
, но когда вы ее используете, вы должны.
Так что просто назначьте вот так, и все должно работатьnumber=${numbers[3]}
Наиболее точным шаблоном регулярного выражения для вашего случая будет:
^[^[:space:].]+\.[^[:space:].]+\.[^[:space:].]+\.[^[:space:].]+$
Я пришел к такому решению:
foo="this1.should.definitely.work2"
[[ $foo =~ ^.*\..*\..*\..*$ ]] && echo "match"
Вы можете использовать класс [[:alnum:]]
, обозначающий буквы и цифры:
$p =~ ^[[:alnum:]]+\.[[:alnum:]]+\.[[:alnum:]]+\.[[:alnum:]]+$