将程序输出评估为 bash 中的整数



>我有一个应用程序,它输出一个带有数字的字符串,如下所示:

output number is 20.

我有一个代码可以解析输出并只删除数字:

result=$(./my_script | awk 'print $4')
echo $result

结果输出将按预期为"20",但现在,如果我尝试将其用作整数,例如:

result=$((result+1))

然后我会得到一个错误:

13915: syntax error: operand expected (error token is "20")

将其用作 seq 参数也会给出错误

$(seq 0 $result) 
seq: invalid floating point argument: ‘33[?25h33[?0c20’

尝试使用 %q 打印它将给出相同的结果:

printf '%q' $result
'E[?25hE[?0c20'

所以,看起来字符串中有一些意想不到的字符,但我不确定如何修剪它们?

谢谢!

您可以尝试使用正则表达式获取数字。

它对我有用:

#!/bin/bash
result=$(bash output.sh | sed 's/[^0-9]//g')
r=$((result+1))
echo $r

希望这有帮助。

或者,简单地更改字段分隔符

result=$(./my_script | awk -F '[. ]' '{print $4}')
echo $result

最新更新