Регулярное выражение bash для соответствия части имени хоста и игнорирования последних символовLinux

Anonymous
Регулярное выражение bash для соответствия части имени хоста и игнорирования последних символов

Сообщение Anonymous »

мы протестировали следующий скрипт - script.sh на имени хоста компьютера - presto-data1-01 , но кажется, что это регулярное выражение presto-data+([[:digit:]]) недостаточно хорошо.
машины-хосты являются примером:

Код: Выделить всё

presto-data1-01
presto-data1-02
presto-data1-03
или

Код: Выделить всё

presto-data2-01
presto-data2-02
presto-data2-03
или

Код: Выделить всё

presto01
presto02
presto03
и т. д.
мой сценарий и пример

Код: Выделить всё

more /tmp/script.sh

#!/usr/bin/env bash
hostname=$(hostname -s)

shopt -s extglob

case $hostname in

presto+([[:digit:]]))
bash /home/presto.sh;;

presto-data+([[:digit:]]))
bash /home/presto-data.sh;;
*)  echo "Unrecognized hostname $hostname" ;;
esac

bash  /tmp/script.sh
Unrecognized hostname presto-data1-01
имя моего компьютера:

Код: Выделить всё

[root@presto-data1-01 # hostname -s
presto-data1-01
что нам нужно исправить в регулярном выражении — presto-data+([[:digit:]]) , чтобы соответствовать примеру presto-data1 и игнорировать символы после presto-data1 как "-01"

Подробнее здесь: https://stackoverflow.com/questions/783 ... characters

Вернуться в «Linux»