/ / append hostname para / etc / hosts bash - bash

anexe nome do host a / etc / hosts bash - bash

Eu estou tentando criar um script bash simples que irá adicionar um registro no arquivo / etc / hosts da minha máquina virtual. Eu consegui fazer isso com sucesso manualmente usando:

echo sed -i "2i127.0.0.1 hostname.whatever.com hostname" /etc/hosts

Mas eu gostaria de criar um script que peça o nome do host e, em seguida, crie-o dinamicamente, por exemplo:

#!/bin/bash

echo "Please enter hostname:"
read hostname
echo sed -i "2i127.0.0.1 $hostname hostname" /etc/hosts

Isso funciona bem, mas eu também gostaria de poderpara definir o nome abreviado "hostname" também. Como eu pegaria as primeiras letras da variável hostname antes do arquivo .dot e também o ecoaria no arquivo corretamente?

Respostas:

4 para resposta № 1

Expansão do parâmetro:

read -p "Please enter hostname: " hostname
echo "${hostname%%.*}"

Leia na disposição:

IFS=. read -p "Please enter hostname: " -a hostname
echo "${hostname[0]}"

Ambas as soluções usam o bash nativo sem precisar de um novo processo. O primeiro também é compatível com POSIX, portanto, funcionará com / bin / sh.


2 para resposta № 2

Você pode obter o nome antes do ponto com cut gostar:

$ hostname=hostname.whatever.com
$ shortname=`cut -d. -f1 <<< $hostname`
$ echo $shortname
hostname