如何将命令输出的第一行设置为bash中的变量

时间:2018-11-29 18:37:17

标签: bash

我想将以下dig命令输出的第一行设置为变量:

root@kali:~# dig +short stackoverflow.com 
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69

因此它输出了很多IP地址,但是我只希望第一个可以通过sedhead完成,如下所示:

root@kali:~# dig +short stackoverflow.com | sed -n 1p
151.101.193.69

问题:

当我将其设置为变量时,它将为我提供所有IP地址:

root@kali:~# cmd='dig +short stackoverflow.com | sed -n 1p'
root@kali:~# $cmd
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69

2 个答案:

答案 0 :(得分:1)

如果要将输出保存到变量中,请使用$(...)

$ ip=$(dig +short stackoverflow.com | sed -n 1p)
$ echo "$ip"
151.101.129.69

如果要创建可以多次运行的快捷方式,请使用以下功能:

$ cmd() { dig +short stackoverflow.com | sed -n 1p; }
$ cmd
151.101.129.69

答案 1 :(得分:0)

要分配值,您需要像这样定义它:

cmd=$(dig +short stackoverflow.com | sed -n 1p)

执行:

ivo@spain-nuc-03:~/Downloads/TestStackoverflow$ echo "${cmd}"
151.101.193.69