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

如何在bash中将命令输出的第一行设置为变量,bash,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地址,但我只想要第一个,它可以通过sed或head完成,如下所示: root@kali:~# dig +short stackoverflow.com | sed -n 1p 151.101.193.69 问题: 当我将其设置为

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

root@kali:~# dig +short stackoverflow.com 
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69
所以它输出了这么多IP地址,但我只想要第一个,它可以通过
sed
head
完成,如下所示:

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

为了分配值,您需要如下定义:

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

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

为了分配值,您需要如下定义:

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

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

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

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

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

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

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

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

不需要
sed
head
或其他任何东西
read-r cmd<不需要
sed
head
或其他任何东西
read-rcmd<@IvoYordanov,演示
cmd='dig+shortstackoverflow.com | sed-n1p'$问题中的cmd
使函数的使用(作为实际/工作方式来完成所显示的事情)相关/主题。也许OP的意思是
cmd=$(dig+shortstackoverflow.com | sed-n1p);回显“$cmd”
,但文本读取是试图将代码分配给变量,并在以后执行。@CharlesDuffy他说变量。他应该知道什么是变量,不要混淆变量和函数。我觉得你的回答会把他弄糊涂。如果足够勇敢,他会更多地了解bash。@IvoYordanov,是的,他们说的是“变量”,但正如你自己在上面指出的,在选择术语时,他们是否正确理解了含义(以及对用例变量适用的限制)存在不确定性/不清晰性。回答这个问题的多种合理解释是值得的,特别是当OP展示了一种使用模式,这意味着他们使用的术语的字面解释与他们的意图不一致时。“我的”答案?我还没有回答这里。。。但是我看不到数组对问题的任何部分有响应,或者问题的任何部分暗示OP可能认为他们可以从非数组变量获得数组行为。我上面评论中的“合理解释”一词很重要,你假装我的意思不存在,从而歪曲了我的意思(从而对我从未提出过的论点作出回应)查尔斯,我很欣赏你学究式的理性。永不改变。@IvoYordanov,
cmd='dig+short stackoverflow.com|sed-n1p'的演示$问题中的cmd
使函数的使用(作为实际/工作方式来完成所显示的事情)相关/主题。也许OP的意思是
cmd=$(dig+shortstackoverflow.com | sed-n1p);回显“$cmd”
,但文本读取是试图将代码分配给变量,并在以后执行。@CharlesDuffy他说变量。他应该知道什么是变量,不要混淆变量和函数。我觉得你的回答会把他弄糊涂。如果足够勇敢,他会更多地了解bash。@IvoYordanov,是的,他们说的是“变量”,但正如你自己在上面指出的,在选择术语时,他们是否正确理解了含义(以及对用例变量适用的限制)存在不确定性/不清晰性。回答这个问题的多种合理解释是值得的,特别是当OP展示了一种使用模式,这意味着他们使用的术语的字面解释与他们的意图不一致时。“我的”答案?我还没有回答这里。。。但是我看不到数组对问题的任何部分有响应,或者问题的任何部分暗示OP可能认为他们可以从非数组变量获得数组行为。我上面评论中的“合理解释”一词很重要,你假装我的意思不存在,从而歪曲了我的意思(从而对我从未提出过的论点作出回应)查尔斯,我很欣赏你学究式的理性。永不改变。