通过shell脚本执行python程序并进行多次命令行传参

news/2025/1/25 4:31:19/

写在前面的话

这个代码功能是通过flownet2提取视频帧的光流信息,代码链接:https://github.com/NVIDIA/flownet2-pytorch,因为该开源工程代码只能指定到 .jpg .png 等视频帧的当前目录,而我们需要提取光流的视频帧在多级目录下,需要进行目录的遍历,所以写了该shell脚本方便多个目录下视频帧的光流提取。

该shell代码包含了读取当前目录所有文件判断文件名称是否为数字判断路径是否存在三个功能。

完整代码

代码可以借鉴,注意代码运行的环境和编译器,还要注意shell脚本对空格、换行等比较敏感

#!/bin/bashdst_path="/home/server/project/GroupFormer-main/data/videos/";
cd $dst_path;
path_list1="$(ls)";for p1 in $path_list1;
doif [[ $p1 =~ ^[0-9]+$ ]]; thencd $p1path_list2="$(ls)";for p2 in $path_list2;doif [[ $p2 =~ ^[0-9]+$ ]]; then_dir=$dst_path$p1$"/"$p2if [ -d $_dir ]; thenecho $_dirpython /home/server/project/flownet2-pytorch/main.py --inference \--model FlowNet2 \--save_flow \--save ./output \--inference_dataset ImagesFromMultiFolder \--inference_dataset_root $_dir \--resume /home/server/project/flownet2-pytorch/FlowNet2_checkpoint.pth.tarfifidonecd .. #return the previousfi
done

代码讲解

这段Shell脚本的功能是在指定的路径下进行遍历,并执行一系列操作。

首先,将目标路径存储在变量dst_path中,并使用cd命令切换到该路径。然后,通过ls命令获取目标路径下的文件和目录列表,并将结果存储在变量path_list1中。

接下来,使用for循环遍历path_list1中的每个元素,表示为变量p1。在每次循环中,首先使用正则表达式判断p1是否为一个数字。如果是数字,则进入相应的目录。

在每个数字目录中,再次使用ls命令获取该目录下的文件和目录列表,并将结果存储在变量path_list2中。

继续使用另一个for循环遍历path_list2中的每个元素,表示为变量p2。同样,使用正则表达式判断p2是否为一个数字。如果是数字,则构建目录路径_dir

然后,通过-d条件判断选项检查路径_dir是否为一个存在的目录。如果是存在的目录,则执行相应的操作,这里是调用Python脚本main.py进行处理。

最后,使用cd ..命令返回上一级目录,完成当前数字目录的处理。

请确保相关的文件和目录存在,并适当配置Python脚本中的参数。在执行该脚本之前,建议进行备份或谨慎测试,以免不可逆地修改或删除文件。

功能代码

1.判断一个字符串是否为数字:

#!/bin/bashstr="123"# 使用正则表达式进行判断
if [[ $str =~ ^[0-9]+$ ]]; thenecho "The string is a number."
elseecho "The string is not a number."
fi

2.判断一个字符串是否为浮点数:

#!/bin/bashstr="3.14"# 使用正则表达式进行判断
if [[ $str =~ ^[0-9]+(\.[0-9]+)?$ ]]; thenecho "The string is a floating-point number."
elseecho "The string is not a floating-point number."
fi

3.判断一个路径是否存在:

#!/bin/bashpath="/path/to/directory"# 判断路径是否存在
if [ -d "$path" ]; thenecho "The directory exists."
elseecho "The directory does not exist."
fi

4.字符串拼接:

str1="Hello"
str2="World"#四种方法
result=$str1$str2
result="${str1}${str2}" #使用${var}形式的变量引用
str1+=$str2  #使用`+=`运算符:
result=$(printf "%s%s" $str1 $str2) #使用`printf`命令进行格式化输出:

请根据具体情况选择适合的字符串拼接方式。需要注意的是,在拼接字符串时,如果字符串中包含空格或特殊字符,最好将变量用双引号 " 括起来,以避免解析问题


http://www.ppmy.cn/news/263430.html

相关文章

从再见Borland说起

自从Borland把CodeGear剥离出去以后,我就基本上没有再关注过Borland,最多看看那些在CodeGear的熟人如李维或DavidI(David Intersimone)有什么新消息。 在 此之前,关于Borland的最“新”消息就是美国时间5月6日Borland被MicroFocus公司以7500…

英文版-安静-Hillsong-Still

基督教 赞美诗歌 Hymns Lyrics MP3 中文版 英文版 中英对照 MP3音频提取(自动播放): http://filer.blogbus.com/5320797/resource_53207971262515539h.mp3 (右击迅雷或目标另存为) 词曲: 写作背景介绍&…

经典中文歌曲-英文版

经典中文歌曲-英文版 15首(第一期) 青春派对是大约与小虎队、红唇族同时的台湾演唱组合,歌手资料不详 。主要作品是 经典中文歌曲的英文翻唱,大陆发行过几盘磁带,很快就消声匿迹了。这里介绍给大家 的是由华星唱片公…

后妈茶话会_歌词(Tough Love)

Ever since I was a girl my own mother vowed 从我小时候起,我母亲就要我立誓 I must find the way to power through a noble brow 我必须找到爬上权利顶端的捷径 I married once for love then my senses came 因爱结婚,突然我意识到 I must marry fo…

起风了-英文版

Roving one way or another 这一路上走走停停 Back forth with drifting water 顺着少年漂流的痕迹 When the site is getting closer 迈出车站的前一刻 My steps falter 竟有些犹豫 Despite long rides, I wanna take flight 不禁笑这近乡情怯 What a bitter plight 仍无可避免…

“遇见”英文版 歌词

“遇见”英文版 这是翻唱电影“向左走向右走”主题曲的英文版吗? 你有惊讶于这个版本与原曲的大不同吗?其实这就是原作者“林一峰”在创作这首歌时的最原始版本,而且在被创作出来的刹那,竟然是以英文呈现的!来自香港的林一峰其实…

张学友《 吻别》

张学友《 吻别》 词/何启弘 曲/殷文琦 ^^故园的红叶^^ 前尘往事成云烟消散在彼此眼前 就连说过了再见也看不见你有些哀怨 给我的一切你不过是在敷衍 你笑的越无邪我就会爱你爱得更狂野 总在刹那间有一些了解 说过的话不可能会实现 就在一转眼发现你的脸 已经陌生不会再像从前 我…

take me to your heart 我太喜欢这首歌了.听过张学友的吻别了吗?你,如果你没听过,那你应该听听这首,如果你听过了,那你更应该听听这首歌!

take me to your heart 歌词 Hiding from the rain and snow Trying to forget but I wont let go Looking at a crowded street Listening to my own heart beat So many people all around the world Tell me where do I find someone like you girl Take me to your heart…