我正在尝试将某个 IP 添加到主机文件中。可以使用 2 个不同的命令检索此 IP,但最好的命令并不总是返回它。
我正在尝试编写一个命令来检查第一个命令,如果它返回 IP,则将该行添加到文件中,否则使用第二个命令。
优先命令:
docker network inspect bridge | grep Gateway | grep -o -E '[0-9\.]+'
替代命令:
ifconfig docker | grep -oP 'inet:\K[^ ]+'
我试过写一个如果别的命令使用-eq ''
or-ne 0
但当我尝试使用它作为参数在主机文件中添加该行时,我无法使其工作。
它可能是这样的(但是在一行 shell 命令中):
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
其中唯一需要 root 权限的部分是打开/etc/hosts
写入,因此我将输出重定向替换为sudo tee
.