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

时间:2018-05-10 02:15:06

标签: 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'

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

它对我有用:

{
    basePath: '',
    frameworks: ['jasmine', '@angular/cli'],
    middleware: ['surpassImage404sMiddleware'],
    plugins: [
      ...
      {'middleware:surpassImage404sMiddleware': ['value', surpassImage404sMiddleware]}
    ],
    ...
}

希望这有帮助。

答案 1 :(得分:0)

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

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