2016-07-10 148 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。 –

相關問題