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

2023-11-19

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

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

#!/bin/bash

# 计数器,用于限制处理的文件数量
counter=0

# 遍历当前目录下的所有 .c 文件
for c_file in *.c; do
    # 如果已经处理了500个文件,就跳出循环
    if [ $counter -ge 500 ]; then
        break
    fi

    # 编译 .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>&1
    else
        echo "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 作为新的文件扩展名,从而生成输出文件的名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Linux 中热插拔设备时检测设备是否存在

    我正在运行 SPIcode http lxr free electrons com source drivers spi spi omap2 mcspi c在熊猫板上 我想知道其中的哪个功能code http lxr free electr
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • Linux 桌面快捷方式和安装图标

    我需要添加什么到我的 spec文件来创建桌面快捷方式并在安装过程中为快捷方式分配一个图标 rpm 如果需要脚本 一个示例将非常有帮助 您在 Linux 下使用 desktop 文件作为图标 图标放置的位置取决于您使用的发行版和桌面环境 由于
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 如何通过替换为空页映射来取消映射 mmap 文件

    Linux 用户空间有没有办法用空页面 映射自 dev null 或者可能是一个空页面 重复映射到从文件映射的页面的顶部 对于上下文 我想找到这个 JDK bug 的修复 https bugs openjdk java net browse
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • 如何使用 xterm.js 创建基于 Web 的终端以 ssh 进入本地网络上的系统

    我偶然发现了这个很棒的图书馆xterm js https xtermjs org 这也是 Visual Studio Code 终端的基础 我有一个非常普遍的问题 我想通过基于网络的终端 不在网络中 可能位于 aws 服务器上 访问本地网络
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C

随机推荐

  • 文件目录和目录文件的作用区别和联系 & C语言文件相关操作 FILE用法

    一 文件目录和目录文件的作用区别和联系 1 他们各自的概念和联系 文件目录 把所有的FCB组织在一起 就构成了文件目录 即文件控制块的有序集合 FCB 为了能对一个文件进行正确的存取 操作系统必须为文件设置用于描述和控制文件的数据结构 称之
  • setlocale()/_wsetlocale()函数的使用

    在C运行库提供的多字节字符 宽字符转换函数 mbstowcs wcstombs 中 需要用到全局变量locale locale encoding 以指定多字节字符的编码类型 1 功能 用来定义全局变量 locale locale encod
  • linux进阶52——pthread_cond_t

    1 概念 条件变量是线程可用的另一种同步机制 条件变量给多个线程提供了一个会合的场所 条件变量与互斥量一起使用时 允许线程以无竞争的方式等待特定的条件发生 条件变量是线程中的东西 就是等待某一条件的发生 和信号一样 2 使用场景 条件变量要
  • Elasticsearch实战(二十二)---ES数据建模与Mysql对比 一对一模型

    Elasticsearch实战 ES数据建模与Mysql对比实现 一对一模型 文章目录 Elasticsearch实战 ES数据建模与Mysql对比实现 一对一模型 1 一对一 模型 1 1 Mysql建模 1 2 Index ES 模型
  • JetBrains IDE 全新UI申请体验

    JetBrains 宣布为其 IDE 系列产品更新默认 UI 申请 目前需要去官网申请才能获得试用 申请地址 https www jetbrains com lp intellij new ui preview 试用资格 在官网申请之后 就
  • 安装或者升级cmake版本

    1 cmake至少需要3 20 的版本 可以去官网 https cmake org files 下载 也可以通过wget下载并解压 如果下载很慢或打不开官网 可评论留邮箱发你 wget 下载 wget https cmake org fil
  • jq 用val()获取input的值无效

    用id获取input标签 取不到该input的value值 用改标签的name属性就可以 4个下面这种input 懒得复制了 就贴一个
  • 【JavaSE学习笔记】Java中的多态及其引出的Upcast和Downcast问题

    JavaSE学习笔记 JAVA中的多态及其引出的Upcast和Downcast 文章目录 JavaSE学习笔记 JAVA中的多态及其引出的Upcast和Downcast 前言 一 JAVA中的多态 二 Upcast Downcast 三 总
  • SEGGER_RTT_printf()函数实现打印浮点、负数-示例

    概述 最近公司项目换另一款gsensor 用到了浮点数打印 又不想使用串口来打印数据 在此做个笔录 通过修改源码方式实现 一 修改源码 1 在 SEGGER RTT printf c 中 的 int SEGGER RTT vprintf u
  • 类模板的成员函数及类的成员模板函数的特化C

    原文 https blog csdn net jfkidear article details 24656929 utm medium distribute pc relevant none task blog searchFromBaid
  • 作为技术岗位面试官的一些分享

    我在过去的四年里参与了很多公司技术岗位的面试 说实话要看出一个人的综合素质 我还真的做不到 至于其他面试官是否可以 我也不得而知 但我个人感悟是 在面试过程中 面试官更加多的是去匹配和比较 在招聘过程中 企业会根据人力需求先制定出一套招聘需
  • 软件测试中需要使用的工具

    作为一个测试人员在日常工作中会使用到很多的工具 今天给大家分享一下这些工具 对软件测试 接口 自动化 性能测试和日常文档编写办公有帮助的网站 接口测试大力推荐国产的接口测试工具 apipost apipost还是一款很不错的接口文档生产工具
  • 轻量化CICD平台建设

    一 需求 想组合一套cicd流程 但是又不想用gitlab jenkins那么重 首先说一下我的硬件条件 一台群晖920 两块4T的红盘 20G内存 一台华硕tuf的路由器 有联通给的动态外网ip 在路由器做了ddns 再说一下软件条件 d
  • SpringBoot启动时初始化资源的几种方法

    SpringBoot提供了多种方法可实现在启动过程中初始化资源 使用注解 PostConstruct 实现InitializingBean接口 实现CommandLineRunner接口 实现ApplicationRunner接口 监听Sp
  • STM32F103实验定时器

    目录 本文 在上一章的基础上 将介绍如下内容 定时器 上一篇 STM32F103实验外部中断和独立看门狗 https blog csdn net qq 40318498 article details 95980287 正文 STM32F1
  • 利用电影直播赚钱的方法(几乎零成本、很多人不知道)

    每天都有人为了找好项目发愁 什么是大家理解的好项目 上来什么都不做就赚钱吗 边玩边赚钱吗 互联网确实有太多赚钱的项目 但是都是需要前期的积累和沉淀 你熬过去了吗 很多人看着别人后面躺赚的潇洒 觉得好后悔 可以当初自己做了吗 别人付出的时候自
  • 升级Struts2.5后使用DMI动态方法调用遇到问题

    转自 http www lvhongqiang com blog429 html 问题 升级Struts2 5后使用DMI动态方法调用报错 method 找不到 源码 struts xml
  • std:forward 完美转发

    概述 TEMPLATE CLASS identity template
  • leetcode214. 最短回文串

    给定一个字符串 s 你可以通过在字符串前面添加字符将其转换为回文串 找到并返回可以用这种方式转换的最短回文串 示例 1 输入 s aacecaaa 输出 aaacecaaa 示例 2 输入 s abcd 输出 dcbabcd 提示 0 lt
  • Linux脚本- 执行当前文件下前500个.c文件,并将每个文件对应的执行结果重定向到同名的.ok文件中

    需求 执行当前文件下前500个 c文件 并将每个文件对应的执行结果重定向到同名的 ok文件中 以下是一个用于实现该功能的 Bash 脚本 bin bash 计数器 用于限制处理的文件数量 counter 0 遍历当前目录下的所有 c 文件