Bash获取字符串值

问题描述 投票:3回答:3

我必须从配置文件中获取网络设备的主机名。该文件看起来像:

...
hostname=T14Z18
ipaddress=192.168.0.1
...

怎么做到这一点?我正在进入机器。

bash
3个回答
3
投票

像这样使用grepcut

$ grep '^hostname=' configfile  | cut -d= -f2
T14Z18

您还可以将以上内容与ssh中的Bash命令结合使用:

$ ssh "$(grep '^hostname=' configfile | cut -d= -f2)"

$()之间的所有内容都将被括号内的命令输出所取代,因此它与手动键入ssh T14Z18时的输出相同。此功能在command substitution中称为Bash

另请注意,您可能使用的OpenSSH有自己的配置存储在~/.ssh/config中,您可以使用它来创建别名。例如,以下条目创建一个名为rpi的别名:

Host rpi
User pi
Hostname 192.168.1.161

您现在可以只执行ssh rpiOpenSSH客户端将自动找到用户和主机名。如果您的网络中有DNS服务器,您当然可以在您的示例中使用主机名,例如T14Z18而不是IP地址。


3
投票

使用简单的awk命令:

awk -F'=' '$1 == "hostname"{ print $2; exit }' configfile

2
投票

使用-如果实施-P 正则表达式切换:

grep -oP 'hostname=\K.*' configfile
                   __
                    ^
                    |

重启比赛技巧

Support of \K in regex

© www.soinside.com 2019 - 2024. All rights reserved.