当前位置: 首页 > news >正文

Linux脚本- 执行当前文件下前500个.c文件,并将每个文件对应的执行结果重定向到同名的.ok文件中

需求:执行当前文件下前500个.c文件,并将每个文件对应的执行结果重定向到同名的.ok文件中

以下是一个用于实现该功能的 Bash 脚本。

#!/bin/bash# 计数器,用于限制处理的文件数量
counter=0# 遍历当前目录下的所有 .c 文件
for c_file in *.c; do# 如果已经处理了500个文件,就跳出循环if [ $counter -ge 500 ]; thenbreakfi# 编译 .c 文件gcc "$c_file" -o "${c_file%.c}.out" 2>/dev/null# 如果编译成功,则执行程序,并将结果保存到 .ok 文件中if [ $? -eq 0 ]; then"./${c_file%.c}.out" > "${c_file%.c}.ok" 2>&1elseecho "Compilation failed for $c_file" > "${c_file%.c}.ok"fi# 删除编译生成的可执行文件rm -f "${c_file%.c}.out"# 更新计数器counter=$((counter + 1))
done

这里是脚本做了什么:

  1. 初始化一个计数器 counter 为 0。
  2. 使用 for 循环遍历当前目录下的所有 .c 文件。
  3. 使用 gcc 编译每一个 .c 文件。
  4. 如果编译成功($? -eq 0 检查上一条命令的退出状态),执行编译出的程序并将输出重定向到 .ok 文件。
  5. 删除编译生成的可执行文件。
  6. 更新计数器。

要运行这个脚本,保存它到一个文件(比如 compile_and_run.sh),然后给它执行权限:

chmod +x compile_and_run.sh

然后执行它:

./compile_and_run.sh

注: ${c_file%.c} 是一种参数扩展(parameter expansion)的语法,用于对变量 $c_file 进行字符串操作。

在这种语法中,% 是一个操作符,表示从变量的末尾开始匹配并删除指定的模式。具体来说,${c_file%.c} 表示删除变量 $c_file 末尾的 .c。

这种操作在字符串处理中很常见,用于去除文件名中的文件扩展名或者删除字符串中的特定后缀。

让我们来看一个例子:

filename="example.txt"
echo ${filename%.txt}

输出结果是:

example

因为 ${filename%.txt} 删除了变量 $filename 末尾的 .txt。

在上面的第一个脚本中,${c_file%.c} 的作用是将 .c 文件的文件名提取出来,而不包括文件扩展名。然后使用 .out 作为新的文件扩展名,从而生成输出文件的名称。

http://www.lryc.cn/news/148085.html

相关文章:

  • 高速公路自动驾驶汽车超车控制方法研究
  • Java 多线程系列Ⅰ(创建线程+查看线程+Thread方法+线程状态)
  • 无入侵接口文档smart-doc
  • nacos配置超级管理员账户,只能mysql存储数据(或者其他数据库)
  • 【前端自动化部署】,Devops,CI/CD
  • 【C语言】探讨蕴藏在表达式求解中的因素
  • 2023/8/31 - Be a wise person and live in the present
  • 【Flutter】Flutter 使用 video_player 播放视频
  • 如何使用 ChatGPT 快速制作播客和其他长篇内容
  • JavaScript基础语法02——JS书写位置
  • LInux快捷命令
  • jvm的内存划分区域
  • 什么是数据中心IP,优缺点是什么?
  • 模块化与组件化:开发中的双剑合璧
  • 【C++初阶】list的常见使用操作
  • 排序之插入排序
  • c# - - - 安装.net core sdk
  • Golang Gorm 高级查询之where + find
  • 【LeetCode】30 天 Pandas 挑战
  • 头歌MYSQL——课后作业2 数据表中数据的插入、修改和删除
  • Maven的profiles多环境配置
  • go 协程
  • 【python爬虫案例】用python爬豆瓣读书TOP250排行榜!
  • Qt中 gui 模块和 widgets 模块的区别
  • feign调用流程
  • 15-数据结构-二叉树的遍历,递归和非递归
  • 最新绕过目标域名CDN进行信息收集技术
  • overlayfs
  • Mysql中九种索引失效场景分析
  • Android RecyclerView 之 列表宫格布局的切换