linuxShell之一 文件读取 循环与分支

Linux中的Shell非常强大, 可以完成我们很多繁琐低效的工作.  

就最近笔者在Shell环境下写java demo的时候就遇到的CLASSPATH问题

写了一个操作HBase的demo发现用到的jar包太多,运行的时候太不好加CLASSPATH 。

然而我又很不喜欢做没有任何意义的机械操作  所以我学习并写了两个sh  ,在这里分享给大家 。


shell 的文本文件读取 

首先shell读取文本文件的原理是按行读取,也就是循环行。下面附上格式

for line in <文本文件路径 do

....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


你可能感兴趣的:(java,linux,shell,机械)