从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。
虽然SHELL比之系统编程语言要弱一些,简单一些,但是写好的SHELL程序,也是不容易的,对做Java编程的工程师来讲,要再去学习一门SHELL语言,呵呵。但是你可能没有想过,其实,你完全可以使用Java来写Shell,这样,不但不用再学新的语言,你和别人之前写好的类库,都可以非常轻松的派上用场喽。
怎样搭建这样的环境呢?很简单,请看下面的步骤:
首先,你当然需要下载和安装Java环境,建议直接1.6之上的版本吧。安装好即可(例如在/opt/java1.6.0目录)。
第二,需要到www.beanshell.org下载一个小小的类库beanshell,只有一个jar包,放到一个目录(例如/opt/beanshell/beanshell.jar)即可。然后需要配置一个OS的环境变量CLASSPATH,把beanshell的jar配置在CLASSPATH中。
(其实,beanshell还有很多丰富的功能,大家有空可以好好研究一下,哈)
第三,编写shell,不知道大家注意过一般shell的第一行没有,一般都是:
#!/bin/sh |
符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程 序。如果首行没有这句话,在执行脚本文件的时候,将会出现错误。后续的部分就是主程序
如果是后边的shell语句是java,那就需要指明,后面的语句,都是要beanshell来解释执行,写成:
#!/usr/java/bin/java bsh.Interpreter
bsh.Interpreter就是beanshell里边的类。我们千万记住,先配置一个OS的环境变量CLASSPATH,把beanshell的jar配置在CLASSPATH中。好像直接在java后边写-classpath不行,不知道为什么。
或者写成
#!/bin/sh //bin/true; exec java bsh.Interpreter "$0" "$@"
第四,写Shell的内容
在shell的后边,写java语句即可,需要注意的是,你如果打算使用beanshell jar包之外的类,先把包配置到CLASSPATH里就行。在beanshell中,也可以动态向classpath中添加内容,这里就不介绍了,有兴趣的可以自己看文档。
第五,执行shell
和其它shell一样,在命令行上执行即可。例如
./shelltest.sh |
第六 参数传递
有参数的情况也一样,直接在脚本后写参数即可
./append2file.sh "aaaa" test.txt |
shell里边,使用bsh.args[0]、bsh.args[1]取出参数即可。
示例,向一个文件中添加一句话:
#!/opt/jdk1.6.0_37/jre/bin/java bsh.Interpreter import java.io.*; System.out.println(bsh.args[0]); System.out.println(bsh.args[1]); try{ FileOutputStream fos = new FileOutputStream(bsh.args[0],true);//append=true fos.write(bsh.args[1].getBytes()); fos.close(); }catch(Exception ex){ //... } System.out.println("------append ok-----"); |
而且,这个shell还可以和shell语言相互调用,怎么样,很方便吧。
相关推荐
用Java实现的shell,用Java实现的shell,用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell
java调用shell 包含简单的编写shell文件 调用含有参数的shell文件
java中调用shell 封装好的方法,直接调用其他指定主机上的shell
java调用shell脚本java调用shell脚本java调用shell脚本java调用shell脚本java调用shell脚本java调用shell脚本
java远程调shell,自己研究的,在网上找了很多,终于可以用了。
用java语言,sokcet远程连接执行shell
在java代码中调用执行shell脚本,sqlldr导数与使用sqlplus在shell调用执行存储过程。 linux环境中有2个dba的用户:oracle、erm 还有1个web用户:erm 在linux环境中,这三个用户都可以直接在任意目录下执行该shell...
我们选择后一种,即当完成外币资金的调度工作后,用Java的OutputStreamWriter来生成一个Txt文件,然后用Java来调用Shell脚本,在Shell脚本中完成FTP文件到Kondor系统的工作。
java shell 使用shell脚本执行java 程序
java调用shell命令.pdf
java字段template shell模板生成j
Java实现远程执行SHELL, JAVA实现远程登陆执行shell脚本。上传文件到远程服务器,下载远程服务器资源。 ShellExecutor exe = new ShellExecutor("192.168.1.1", 22, "USERNAME", "PASSWORD"); if (exe.login()) {...
Jess__The_Java_Expert_System_Shell:DistributionCategory UC-411 SAND98-8206 (revised)Unlimited Release First Printed November 1997 Jess, The Java Expert System Shell ...
java调用shell
linux初学者写的小脚本,用来配置JAVA环境变量,纯属练手,不喜勿喷
shell,bat脚本运行java程序, shell,bat脚本运行java程序,
解决有java调用shell脚本需求的童鞋们,包含一些调用的测试方法,有问题可留言回复。
在Java程序中调用Unix/Linux主机上的Shell命令,并返回相应执行结果。
该工具包可实现远程调用Shell脚本,可帮助您轻松实现java远程调用Shell脚本