shell批处理文件,并将运算结果返回
问题背景是这样的:别人用C++写了一个算法,算法内部比较复杂,但是呢,对于编译好的文件用起来比较方便,比如在linux终端,my_program 1.png 2.txt这样就可以用,但是这样只能够输入一张图片,有没有可能在shell里面写循环,然后每次都调用这个函数呢?
函数的原型是
./lens_distortion_correction_division_model_1p example/pattern.png pattern_canny.png pattern_hough.png pattern_corrected_image.png 0.8 0.0 1.0 3.0 2.0 primitives.txt
lens_distortion_correction_division_model_1p是可执行的文件, 后面是输入输出的参数,最后的primitives.txt程序最终输出的结果,这个txt文件中只有某一行是我想要的
直接上代码
#!/bin/bash filenames=$(ls ./image_dataset/*.png)
for file in ${filenames}
do
{
echo ${file}
image_name=${file%.*} # 去掉文件名的后缀
#echo $image_name
image_file_name=${image_name##*/} # 去掉反斜杠前面多于的前缀, 得到裸的文件名
imagepath=./intern_image/ ./lens_distortion_correction_division_model_1p ${file} ${imagepath}${image_file_name}'_candy.png' ${imagepath}${image_file_name}'_hough.png' ${imagepath}${image_file_name}'_correct.png' 0.8 0.0 4.0 3.0 2.0 primitives2.txt
a=$(sed -n "5p" primitives2.txt | awk '{print $7}') # 获取畸变参数
echo $a # 打印畸变参数
full_image_file_name=${file##*/}
echo $full_image_file_name $a >> rs.txt
}& #多线程加速
done
wait
最要的步骤是用$(ls ./image_dataset/*.png)来遍历文件夹下所有png后缀的文件,然后将这个文件作为我刚刚说到的编译好的文件的输入变量,然后对于输出的primitives2.txt获取特定的某一行,将这某一行连同文件名称保存到rs.txt文本下
在最后的中括号用&符号以及wait来进行多线程加速
shell批处理文件,并将运算结果返回的更多相关文章
- Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构
一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...
- 【HDU5730】Shell Necklace(多项式运算,分治FFT)
[HDU5730]Shell Necklace(多项式运算,分治FFT) 题面 Vjudge 翻译: 有一个长度为\(n\)的序列 已知给连续的长度为\(i\)的序列装饰的方案数为\(a[i]\) 求 ...
- [SHELL]shell中的数学运算
一,expr 太麻烦,看的脑壳疼 二,使用方括号 !!!! bash shell用这种方法只支持整数运算,z shell倒是支持浮点型运算 var_1= var_2= var_3= my_var_1 ...
- Shell编程——Shell中的数学运算
在Linux Shell中进行数学运算,通常能够使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1.let命令 let命令是bash内置命令.能够实现简单的算术以及逻 ...
- Linux Shell编程(5):整数运算
http://blog.sina.com.cn/s/blog_6db275da0101asmf.html #!/bin/sh let a=$1+$2 b=$[$1+$2] ((c=$1+$2)) d= ...
- shell中的数学运算
shell中要进行数学运算通常有3中方法: expr命令 比如 expr 1 + 6就会返回7,使用expr的缺点就是碰到乘法运算,或者加括号(因为它们在shell中有其他意义),需要使用转义,比如: ...
- linux下数学运算器:expr命令(shell中完成数学运算)
expr用法 expr命令一般用于整数值,但也可用于字符串.一般格式为: expr argument operator argument expr也是一个手工命令行计数器. $expr 10 ...
- shell中的数值运算
By francis_hao Oct 2,2017 本文摘录自bash的man手册. 算数运算相关的形式 形式 含义 ((expression)) expression按照下面描述的算术 ...
- shell编程之数学运算
shell数学运算支持整数运算的四种方法 1.let命令 no1=4; no2=5; let result=no1+no2 2.[]操作符 result=$[ no1 + no2] 3.(())操作符 ...
随机推荐
- SSM-网站后台管理系统制作(4)---Ajax前后端交互
前提:Ajax本身就为前后端交互服务的,实现功能:用户输入信息,实时判断用户的情况,这也是现在登录界面普遍流行的做法.前端js通过注释识别Controller层,该层查询返回,和之前Google验证码 ...
- flask --- 04 . 偏函数, 线程安全,栈堆,
一.偏函数(partial) ①第一种 结果为: ② 第二种 二.线程安全 将空间转换成时间 问题: 1秒钟打印所有结果 threading.current_thread().ident :线程ID ...
- Java Web获取Web应用根路径
最基本的 1,request.getRealPath("/");这个方法已不推荐用 2,在Servlet 里用this.getServletContext().getRealPat ...
- python第一阶段总结(2)
python3第一阶段的总结 首先申明一下,本人是看网络课程“老男孩”过来写博客的,想把自己学到的东西分享一下.同时给老男孩打个广告,其教学水平真的挺好的.仅据我个人多年的学习评价. 好,接下来是我对 ...
- Code Pages
https://docs.microsoft.com/en-us/windows/desktop/intl/code-pages Most applications written today han ...
- 在WPF中调用文件夹浏览/选择对话框
var dialog = new System.Windows.Forms.FolderBrowserDialog(); System.Windows.Forms.DialogResult resul ...
- JavaScript形而上的策略模式
什么是策略模式? 先看代码片段1. // 代码片段1 var bonus = new Bonus(); bonus.setSalary(10000); bonus.setStrategy(new pe ...
- .Net文件压缩
NuGet中下载Ionic.Zip: public static class ZipHelper { /// <summary> /// 压缩文件 /// </summary> ...
- npm2 与 npm3的包版本管理
npm2采用严格的包依赖模式 npm install name@1.2.* ---- 1.2.0 <= version <= 1.2.9 npm install name@1.* ---- ...
- 文件上传下载显示进度(vue)
编写了一个vue组件,可以实时显示文件上传和下载时候的进度 <template> <div v-show="circleProgress_wrapper_panel_sta ...