2

我有一个变量(OUTPUT),其中包含

"Using pin #4 Data (40): 0x23 0x0 0x18 0x0 0x3b Temp = 24 *C, Hum = 35 %".

TempHum都可以是 0 到 100。

BASH中,我如何找到string "Temp = " and "Hum = "然后将相关数字(“24”和“35”)放在它们各自的变量 TEMP 和 HUM 中。

OUTPUT 变量的长度可以改变,所以我无法根据它们在字符串中的位置找到 TEMP 和 HUM 变量。

太感谢了

4

2 回答 2

3
$ OUTPUT="Using pin #4 Data (40): 0x23 0x0 0x18 0x0 0x3b Temp = 24 *C, Hum = 35 %"
$ [[ "$OUTPUT" =~ Temp\ =\ ([0-9]*) ]] && TEMP=${BASH_REMATCH[1]}
$ [[ "$OUTPUT" =~ Hum\ =\ ([0-9]*) ]] && HUM=${BASH_REMATCH[1]}
$ echo $TEMP 
24
$ echo $HUM
35
于 2013-10-09T05:41:08.687 回答
0

整洁的替代解决方案:

grep -oE " [0-9]+ " <<< $OUTPUT
于 2013-10-09T08:46:55.747 回答