호스트 파일에 특정 IP를 추가하려고 합니다. 이 IP는 두 가지 다른 명령을 사용하여 검색할 수 있지만 최상의 명령이 항상 이를 반환하는 것은 아닙니다.
첫 번째 명령을 확인하고 IP가 반환되면 해당 줄을 파일에 추가하고, 그렇지 않으면 두 번째 명령을 사용하는 명령을 작성하려고 합니다.
우선순위 명령:
docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+'
대체 명령:
ifconfig docker | grep -oP 'inet:\K[^ ]+'
나는다른 것이라면명령은 -eq ''
또는를 사용 -ne 0
하지만 이를 매개변수로 사용하여 호스트 파일에 행을 추가하려고 하면 작동하지 않습니다.
다음과 같을 수 있습니다(그러나 쉘 명령의 한 줄에 있음).
if [ docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+' -ne 0 ] ;
then sudo echo $(docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+') "symfony.dev" >> /etc/hosts;
else sudo echo $(ifconfig docker0 | awk '/inet:/{ print substr($2,6); exit }') "symfony.dev" >> /etc/hosts;
fi
답변1
if
다른 명령과 마찬가지로 명령문으로 수집된 출력은 리디렉션되거나 파이프될 수 있습니다.
if ! docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+'; then
ifconfig docker | grep -oP 'inet:\K[^ ]+'
fi | sudo tee -a /etc/hosts > /dev/null
루트 권한이 필요한 유일한 부분은 /etc/hosts
쓰기를 위해 여는 것이므로 출력 리디렉션을 sudo tee
.