/ / dodaj nazwę hosta do / etc / hosts bash - bash

dołącz nazwę hosta do / etc / hosts bash - bash

Próbuję utworzyć prosty skrypt bashowy, który doda rekord w pliku / etc / hosts mojej maszyny wirtualnej. Udało mi się to zrobić ręcznie, używając:

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

Chciałbym jednak utworzyć skrypt, który prosi o nazwę hosta, a następnie tworzy go dynamicznie, na przykład:

#!/bin/bash

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

To działa dobrze, ale chciałbym również mócaby ustawić także krótką nazwę „nazwa hosta”. Jak wziąć pierwsze litery zmiennej nazwa_hosta przed .dot, a także powtórzyć to poprawnie w pliku?

Odpowiedzi:

4 dla odpowiedzi № 1

Rozszerzenie parametrów:

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

Czytaj do tablicy:

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

Oba te rozwiązania używają rodzimego basha bez rozwidlenia nowego procesu. Pierwszy z nich jest również zgodny z POSIX, więc będzie działał z / bin / sh.


2 dla odpowiedzi nr 2

Możesz uzyskać nazwę przed kropką za pomocą cut lubić:

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