首页 > 解决方案 > 在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: ‘\033[?25h\033[?0c20’

尝试用 %q 打印它会得到相同的结果:

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

所以,字符串中似乎有一些意想不到的字符,但我不知道如何修剪它们?

谢谢!

标签: bash

解决方案


您可以尝试使用Regex获取号码。

它对我有用:

#!/bin/bash

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

希望这可以帮助。


推荐阅读