我正在通过shell脚本执行我的URL并将响应存储在一个变量中。
现在,我正在使用grep从上述字符串中提取状态变量的值。
http://hostname.domain.com:8080/beat
点击上述网址后,我将收到以下响应,需要对其进行解析并从中提取state
的值。
num_retries_allowed: 3 count: 30 count_behind: 100 state: POST_INIT num_rounds: 60 hour_col: 2 day_col: 0
现在,我正在使用grep从上述字符串中提取状态变量的值。
#send the request, put response in variable
DATA=$(wget -O - -q -t 1 http://hostname.domain.com:8080/beat)
#grep $DATA for state
state=$(grep -oP 'state: \K\S+' <<< "$DATA")
[[ -z "$state" ]] && state=0
echo $state
如果在$DATA
变量中没有包含state:
字符串,那么我想将state
变量赋值为0
。然后我想验证条件并根据结果退出脚本。
如果state
等于POST_INIT
,则成功退出shell脚本;如果state
等于0
,也同样成功退出。
if [[ $state -eq "POST_INIT" || $state -eq "0" ]]; then exit 0; fi
所以我的上面的if条件不知何故没有起作用。我注意到如果我的 state
变量值为 IN_INIT
,那么它也会退出 shell 脚本?在字符串比较方面,我在这里做错了什么吗?
==
还是=
? - john=
,但是如果你想使用==
,bash 也可以接受(尽管我不建议这样做)。 - Etan Reisner