>我有一个应用程序,它输出一个带有数字的字符串,如下所示:
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[?25h 33[?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