bash 中覆写当前处理的文件
工作中需要处理将大量的java文件中一个资源文件位置变更,编写一个简单的bash脚本,采用sed替换,但是采用sed 's//' test.java > test.java时候,test.java消失,查了一下,有一下的解决方法,采用tmp文件进行复写。
#! /bin/bash
while read line
do
if grep "sessionTimeOut = conf.getInt(\"zookeeper.session.timeout\", 180000);" $line
then
echo $line match
sed 's/sessionTimeOut = conf.getInt("zookeeper.session.timeout", 180000);/caonidaye/' $line > tmp
cp tmp $line
fi
done< <(find . -name '*.java')