将命令输出的一部分分配给变量(bash)

时间:2016-07-10 02:42:33

标签: bash

我有一个产生以下输出的脚本:

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

我只需要将code = 211部分分配给变量。我该怎么做?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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