2016-07-10 147 views
-1

I的一部分具有产生以下输出的脚本:分配一个命令输出给一个变量(bash)的

[RESPONSE] code = 211 description = Domain name not available queuetime = 0 runtime = 0.009 

我需要只分配code = 211部分给一个变量。我将如何做到这一点?

+1

你的意思是商店'码= 211'在一个变量说'var' – sjsam

+3

而且输出格式是否为常量?到目前为止还有哪些努力? – sjsam

+1

嗨。不,我不需要存储输出。输出是域检查的结果。代码= 211表示该域不可用。当域可用于代码= 210时,代码会更改。哦,格式是肯定的。 – turnic

回答

2

如果您想保存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
+0

sjsam,我收到了这个错误。 -bash-3.2 $ ./check.sh 的sed:无效选项 - 电子 用法:用sed [选项] ... {脚本只-IF-没有其他脚本} [输入文件] ... – turnic

+0

@turnic:你在哪个平台上?你可以用'-r'替换'-E',并且知道结果' – sjsam

+0

@turnic如果我没有弄错,你正在运行一个无限循环?我对吗? – sjsam

1
#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 
+0

一个替代方案是'EVAL“ $(./脚本| awk的 '{printf的 “%s =%s” 时,$ 2,$ 4}')。“' – sjsam

+0

这确实假定输出具有固定的格式,如果不是的话,这是不行的你。可以使用awk'sub'解决.nbd。 –

相关问题