I的一部分具有产生以下输出的脚本:分配一个命令输出给一个变量(bash)的
[RESPONSE] code = 211 description = Domain name not available queuetime = 0 runtime = 0.009
我需要只分配code = 211
部分给一个变量。我将如何做到这一点?
I的一部分具有产生以下输出的脚本:分配一个命令输出给一个变量(bash)的
[RESPONSE] code = 211 description = Domain name not available queuetime = 0 runtime = 0.009
我需要只分配code = 211
部分给一个变量。我将如何做到这一点?
如果您想保存code = 211
一个变量说var
做到这一点:
$ var="$(./your_script | sed -E 's/.*(code = [[:digit:]]+).*/\1/')"
$ echo "$var"
code = 211
相反,如果你想给脚本的结果分配211 code
:
$ eval "$(./your_script | sed -E 's/.*(code = [[:digit:]]+).*/\1/;s/ //g')"
$ echo "$code"
211
注意
s/.*(code = [[:digit:]]+).*/
保留结果的code = number
部分s/ //g
删除周围=
的空间,使code=number
传递给eval
#Assuming there is space between [response] and code.Seems there is from your example.
var=$(./yourScript.sh |awk '{print $2,$3,$4}')
echo $var
code = 211
一个替代方案是'EVAL“ $(./脚本| awk的 '{printf的 “%s =%s” 时,$ 2,$ 4}')。“' – sjsam
这确实假定输出具有固定的格式,如果不是的话,这是不行的你。可以使用awk'sub'解决.nbd。 –
你的意思是商店'码= 211'在一个变量说'var' – sjsam
而且输出格式是否为常量?到目前为止还有哪些努力? – sjsam
嗨。不,我不需要存储输出。输出是域检查的结果。代码= 211表示该域不可用。当域可用于代码= 210时,代码会更改。哦,格式是肯定的。 – turnic