使用shell处理文件

科研中我会到了许多问题,我在这里记录下来,如果你碰巧看到了,如果你碰巧发现了我的错误,或者有补充,请私信或者评论,我会修改的。谢谢。

在今天的实验中,我希望批量处理文件,于是我想到了shell脚本。我从网上搜了几个基本概念,拼凑出来,在此记录一下。

第一行

#! /bin/bash

#!可以认为是一种标识。在最一开始,我知道在shell中使用#进行注释,所以我误以为这是注释,但是我在其他脚本中看到"#! /bin/python3"一下子就联想到这是在指定解释器。ubuntu中shell脚本使用bash运行。我暂时不清楚bash和shell的关系,但是这并不影响我完成我的目的。

遍历当前目录下所有文件

for file in `ls`
do
   ····
done

ls命令是显示当前目录所有文件,要运行该命令使用撇(`)包起来。

if判断

我前几天遇见过几个脚本,看到if中有"-eq"之类的,心里就觉得这很麻烦,我使用的是最笨的方法,还是老原则,一切目的都是为了实现文件批量处理,只要结果对就行了。

if [ ${file##*.} = 'c' ]
then
	`clang-6.0 -S -emit-llvm -O3 -o ${file%.*}.ll $file`
	`opt -reg2mem -o ${file%.*}.bc ${file%.*}.ll`
	`llvm-dis -o ${file%.*}.ll ${file%.*}.bc`
	echo $file
fi
  1. 判断条件用“[ ]”括起来,四周要有空格(许多网站上都特别提醒)
  2. 使用for循环中的变量file要加上$
  3. 注意相等用=,而不是==
  4. ##*.**可以提取文件后缀,我记得含有提取文件名字忽略后缀的格式

添加权限

sudo chmod -R 777 ./run.sh 添加最高权限采用运行./run.sh该脚本。
7对应二进制是111,表示文件的读写运行三个操作都可以执行,三个7表示管理,用户,用户组的权限,似乎这样的,不重要了。

完整代码

#! /bin/bash

for file in `ls`
do
	if [ ${file##*.} = 'c' ]
	then
		`clang-6.0 -S -emit-llvm -O3 -o ${file%.*}.ll $file`
		`opt -reg2mem -o ${file%.*}.bc ${file%.*}.ll`
		`llvm-dis -o ${file%.*}.ll ${file%.*}.bc`
		echo $file
	fi
done


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值