Я запускаю свой сценарий оболочки на нескольких машинах, и все эти машины могут находиться в разных датацентрах.разделил строку и вытащил из нее третье последнее поле?
- Если машина находится в
abc
центре обработки данных, то я не хочу спать вообще и двигаться вперед к следующей строке в сценарии оболочки. - Если машина находится в
def
датацентре, то я хочу спать в течение 30 минут, после чего перейду к следующей строке в сценарии оболочки. - Если машина находится в
pqr
датацентре, то я хочу спать в течение 60 минут, после чего перейду к следующей строке в сценарии оболочки.
Мое имя машины похоже на это, и оно будет всегда и, как вы можете видеть, имя датацентра всегда до .host.com
, и все будет так.
machineA.abc.host.com
machineB.def.host.com
machineC.pqr.host.com
machinef-12341.testra.abc.host.com
.....
В моем ниже скрипте, я уже имя машины хранится в HOSTNAME
переменных так, как я могу извлечь имя центра обработки данных от этого в сценарии оболочки и применять выше условия? Мне нужно извлечь имя центра обработки данных, которое находится непосредственно перед .host.com
, поэтому мне нужно начать с конца?
#!/usr/bin/env bash
HOSTNAME=$hostname
.....
// I want to execute this line after the above if/else if logic
echo "Hello World"
Каков наилучший способ для этого? Я могу разделить строки на переменные, но как получить соответствующую часть, которая мне нужна, а затем применить if/elseif логику здесь?
В моем случае, я извлекая имя хоста, где скрипт работает так нет жёстко списка хостов .. так что я могу хранить выход этого в переменная, а затем база, которую я могу сделать, если/else, если логика и сон соответственно. –
Все в порядке. Или используйте 'case $ {mysubstring} в ... esac'. –
'rev' - это хороший трюк, делающий' cut' работу в этом случае! Спасибо @WalterA. – codeforester