Linux中的Shell非常强大, 可以完成我们很多繁琐低效的工作.
就最近笔者在Shell环境下写java demo的时候就遇到的CLASSPATH问题
写了一个操作HBase的demo发现用到的jar包太多,运行的时候太不好加CLASSPATH 。
然而我又很不喜欢做没有任何意义的机械操作 所以我学习并写了两个sh ,在这里分享给大家 。
shell 的文本文件读取
首先shell读取文本文件的原理是按行读取,也就是循环行。下面附上格式
for line in
....shell操作
done
line 是每行读取的文本存放的变量.
上面是读取文件 当然读取文件的条件有两个
第一文件存在 第二有权限
先说第一个吧 这个简单 第二个有点高级了 这里就不做深入了。
shell 的分支语句之一 if .. then .. else... fi
if fi 包含起来的是if分支块
格式: if [ 表达式 ] then 语句1 [else 语句2 ] fi
表达式中-f代表文件是否存在
if[ -f "file" ] then .... fi file文件存在的操作
if[ ! -f "file" ] then .... fi file 文件 不存在的操作
-----------------------------------------正题分隔线-------------------------------
有了上面的基础 要加入java classpath就简单了
附上代码:
classpaths="";
if [ -f ".classpath"] then
for line in <.classpath do>
classpaths=$classpaths:$line;
done;
fi
执行java或编译加上 -cp $classpaths就可以了
当然也可以在classpaths=$classpaths:$line;上加入字符串处理 ${line/exp/repcacestr}替换$line