bash - 在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'
所以,字符串中似乎有一些意想不到的字符,但我不知道如何修剪它们?
谢谢!
解决方案
您可以尝试使用Regex获取号码。
它对我有用:
#!/bin/bash
result=$(bash output.sh | sed 's/[^0-9]//g')
r=$((result+1))
echo $r
希望这可以帮助。
推荐阅读
- mercurial - Mercurial hg revert 带回旧文件
- wpf - 删除所选项目后如何更改组合框选择?
- com - 将 VirtualFileDataObject 与 async/await 一起使用时出现“COM 对象与其基础 RCW 分离”错误
- python-3.x - Python代码错误:IndexError:列表索引超出范围
- c - 制作自动排序插入功能
- python - 使用python在单元格excel中填充图像
- laravel - 如何在 laravel 视图中使用 foreach 显示数据
- html - 使用 Bootstrap 4 嵌套行中的图像大小
- android - 蓝牙服务器关闭
- r - R:使用 as.data.frame() 将列表转换为数据框时遇到问题