Вы можете использовать IFS для разделения текста по любому желаемому токену. Для доменных имен мы можем использовать символ точка / точка.
#!/usr/bin/env sh
shorthost() {
# Set IFS to dot, so that we can split $@ on dots instead of spaces.
local IFS='.'
# Break up arguments passed to shorthost so that each domain zone is
# a new index in an array.
zones=($@)
# Echo out our first zone
echo ${zones[0]}
}
Если это в вашем скрипте, то, например, вы получите test
при запуске shorthost test.example.com
. Вы можете отрегулировать это в соответствии со своим вариантом использования, но, как мне кажется, здесь важно знать, как разбить зоны на массив.
Я хотел предоставить это решение, потому что я чувствую, что порождать другой процесс - это излишне, когда вы можете сделать это легко и полностью в своей оболочке с помощью IFS
. Следует обратить внимание на то, что некоторые пользователи будут рекомендовать такие вещи, как hostname -s
, но это не работает в пользовательском пространстве BSD. Например, пользователи MacOS не имеют флага -s
, я не думаю.