在我跑完之后hostname
我得到了完整限定域名 (FQDN)像这样:
$ hostname
foo.mydomain.xyz
我只想获取短名称,foo
以便可以将其作为变量存储在脚本中。我尝试了一些awk
匹配.
(点)的方法,但运气不佳。
答案1
使用awk
$ echo foo.mydomain.xyz | awk -F. '{print $1}'
foo
awk 按“记录”(默认为行)接收输入,并将每条记录分为“字段”。默认情况下,字段以空格分隔。在这里,我们将默认值更改为字段分隔符为句点。对于此示例,这意味着第一个字段为foo
,第二个字段为mydomain
,第三个字段为xyz
。我们告诉 awk 仅打印第一个字段foo
。
要将短名称捕获到 shell 变量中:
shortname=$(hostname | awk -F. '{print $1}')
使用sed
这个问题也可以通过以下方法解决sed
:
$ echo foo.mydomain.xyz | sed 's/\..*//'
foo
此处,替换命令s/\..*//
只是查找句点并删除句点及其后面的所有内容。
使用 shell
$ name=foo.mydomain.xyz
$ name=${name%%.*}
$ echo $name
foo
答案2
没有必要使用 sed、awk、grep。只需使用-s
标志hostname
:
$ hostname -s
foo
从手册页中:
-s, --short
Display the short host name. This is the host name cut at the first dot.