问题背景是这样的:别人用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批处理文件,并将运算结果返回的更多相关文章

  1. Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构

    一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...

  2. 【HDU5730】Shell Necklace(多项式运算,分治FFT)

    [HDU5730]Shell Necklace(多项式运算,分治FFT) 题面 Vjudge 翻译: 有一个长度为\(n\)的序列 已知给连续的长度为\(i\)的序列装饰的方案数为\(a[i]\) 求 ...

  3. [SHELL]shell中的数学运算

    一,expr  太麻烦,看的脑壳疼 二,使用方括号 !!!! bash shell用这种方法只支持整数运算,z shell倒是支持浮点型运算 var_1= var_2= var_3= my_var_1 ...

  4. Shell编程——Shell中的数学运算

    在Linux Shell中进行数学运算,通常能够使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1.let命令 let命令是bash内置命令.能够实现简单的算术以及逻 ...

  5. 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= ...

  6. shell中的数学运算

    shell中要进行数学运算通常有3中方法: expr命令 比如 expr 1 + 6就会返回7,使用expr的缺点就是碰到乘法运算,或者加括号(因为它们在shell中有其他意义),需要使用转义,比如: ...

  7. linux下数学运算器:expr命令(shell中完成数学运算)

    expr用法  expr命令一般用于整数值,但也可用于字符串.一般格式为:  expr argument operator argument  expr也是一个手工命令行计数器.  $expr 10 ...

  8. shell中的数值运算

    By francis_hao    Oct 2,2017   本文摘录自bash的man手册.   算数运算相关的形式 形式 含义 ((expression)) expression按照下面描述的算术 ...

  9. shell编程之数学运算

    shell数学运算支持整数运算的四种方法 1.let命令 no1=4; no2=5; let result=no1+no2 2.[]操作符 result=$[ no1 + no2] 3.(())操作符 ...

随机推荐

  1. Consul 介绍

    Consul 介绍 Consul是一个分布式.高可用性,在基础设施中发现和配置服务的工具. 主要功能 服务发现 通过DNS或HTTP接口使得消费者发现服务,应用程序可以轻松找到所依赖的服务. 健康检查 ...

  2. [C++ Primer Plus] 第4章、复合类型(一)程序清单——指针new和delete

    程序清单4.1 #include<iostream> using namespace std; void main(){ ]; yams[]=; yams[]=; yams[]=; ]={ ...

  3. Bugku-CTF之管理员系统+程序员本地网站

    Day12 管理员系统 http://123.206.31.85:1003/ flag格式flag{}  

  4. libcurl返回常见错误码

    转载:https://blog.csdn.net/kenkao/article/details/46875571 转载:http://www.cnblogs.com/wainiwann/p/34929 ...

  5. 【Core内存】.NET Core 2.0中使用MemoryCache

    说到内存缓存大家可能立马想到了HttpRuntime.Cache,它位于System.Web命名空间下,但是在ASP.NET Core中System.Web已经不复存在.今儿个就简单的聊聊如何在ASP ...

  6. 『TensorFlow』滑动平均

    滑动平均会为目标变量维护一个影子变量,影子变量不影响原变量的更新维护,但是在测试或者实际预测过程中(非训练时),使用影子变量代替原变量. 1.滑动平均求解对象初始化 ema = tf.train.Ex ...

  7. Codeforces Round #349 (Div. 1)E. Forensic Examination

    题意:给一个初始串s,和m个模式串,q次查询每次问你第l到第r个模式串中包含\(s_l-s_r\)子串的最大数量是多少 题解:把初始串和模式串用分隔符间隔然后建sam,我们需要找到在sam中表示\(s ...

  8. linux安装jdk及解压命令

    注意事项:虚拟机安装的系统,不能从桌面直接拖拽传输文件,否则解压出错 查看系统自带安装的java rpm -qa | grep java 删除非.noarch文件 rpm -e --nodeps 文件 ...

  9. 在 .NET项目中使用 Redis(2018.10.16)

    1. 打开NuGet管理器搜索redis,安装:“StackExchange.Redis” 2. 配置 Web.config 文件 <connectionStrings> <add ...

  10. (02) 第一个springboot程序

    1. 创建一个springboot程序 1. idea 自带的springboot插件 2. 直接从https://start.spring.io 创建好程序下载下来, 之后覆盖你的创建的项目 2. ...