从程序员的角度来看, 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 命令来发送文件,例如使用 `scp` 命令来发送文件到远程服务器。 * 批量任务:我们可以使用 Java 调用 Shell 命令来执行批量任务,例如使用 `bash` 命令来执行批量脚本。 ...
在Java中,我们可以使用`Runtime.getRuntime().exec()`方法来执行Shell命令。如果需要传递参数给Shell脚本,可以在执行的命令字符串中加入相应的参数。例如,`exec("sh xx.sh arg1 arg2")`语句中的`arg1`和`arg2`...
用Java实现的shell,用Java实现的shell,用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell用Java实现的shell
Java远程调用Shell是一种技术,它允许通过Java程序执行远程服务器上的操作系统命令,这在系统集成、自动化运维或跨平台任务调度中非常有用。这里,我们深入探讨如何实现这一功能,以及涉及的关键知识点。 首先,...
java中调用shell 封装好的方法,直接调用其他指定主机上的shell
Java Socket远程调用Shell是一种通过Java程序利用Socket通信协议实现对远程服务器的Shell命令执行的技术。这种方式常用于系统管理、自动化运维或者分布式系统的组件交互。下面将详细介绍这一技术的实现原理、步骤...
这涉及到Java与操作系统层面的交互,其中关键的技术点包括:如何使用`OutputStreamWriter`来生成文本文件,以及如何通过Java调用Shell脚本来完成后续的文件处理任务。 #### 二、Java生成文本文件 为了生成文本文件...
标题中的“JAVA执行shell命令小工具”指的是使用Java编程语言编写的小程序,它能够执行操作系统级别的Shell命令。在Java中,通常使用`Runtime.getRuntime().exec()`或者`ProcessBuilder`类来实现这一功能。这两个类...
Java作为一种跨平台的编程语言,提供了多种方式来调用Shell脚本,实现与操作系统的交互。本文将深入探讨Java如何调用Shell脚本以及相关的知识点。 首先,Java通过Runtime类或ProcessBuilder类可以执行外部程序,...
本话题聚焦于“Java字段template shell模板生成”,这是一个使用shell脚本(如hello.sh)来创建针对Java字段的模板文件的过程。下面将详细阐述这个过程涉及的知识点。 首先,`shell`是Unix/Linux系统中的一种命令...
在java代码中调用执行shell脚本,sqlldr导数与使用sqlplus在shell调用执行存储过程。 linux环境中有2个dba的用户:oracle、erm 还有1个web用户:erm 在linux环境中,这三个用户都可以直接在任意目录下执行该shell...
Java实现远程执行SHELL, JAVA实现远程登陆执行shell脚本。上传文件到远程服务器,下载远程服务器资源。 ShellExecutor exe = new ShellExecutor("192.168.1.1", 22, "USERNAME", "PASSWORD"); if (exe.login()) {...
下面我们将深入探讨如何使用shell脚本来启动Java程序以及相关的知识点。 首先,我们需要了解Java程序的运行方式。Java应用程序通常由一个主类(包含`main`方法)作为入口点。通过`java`命令,我们可以指定这个主类...
下面将详细介绍如何使用shell脚本(适用于Unix/Linux系统)和bat脚本(适用于Windows系统)来运行Java程序。 **shell脚本运行Java程序** 在Unix/Linux环境中,我们可以创建一个.sh文件作为shell脚本来执行Java程序...
1. **自动化部署**:在CI/CD流程中,使用Java调用Shell脚本来自动构建、测试和部署代码。 2. **系统监控**:编写Java程序,定期调用Shell脚本收集系统性能数据,如CPU使用率、内存状态等,进行实时监控。 3. **...
3. **Shell脚本执行**:在SSH连接建立后,Java程序可以通过执行`exec`命令来运行远程服务器上的Shell脚本。脚本可以包含任意的Linux或Unix命令,甚至复杂的流程控制语句。 4. **输入/输出流处理**:为了获取Shell...
标题"shell java"暗示了我们要讨论的是如何利用`Shell`脚本来运行和管理`Java`程序。下面将详细介绍这个主题。 1. **Shell脚本基础**: - `Shell`脚本是用`Shell`语法编写的文本文件,其中包含了一系列命令,用于...
标题 "java_unix_shell.rar" 提供的信息表明,这个压缩包包含了一个使用Java语言实现的Unix Shell的模拟系统。Unix Shell是Unix操作系统中的一个命令行接口,用户可以通过它来执行各种系统命令,进行文件管理和系统...
Shell脚本则可以作为持续集成(CI)或持续部署(CD)流程的一部分,调用这些构建工具来打包、测试和部署Java应用程序。 总结来说,Shell脚本调用Java类是系统集成和自动化的重要手段。理解如何在Shell环境中正确运行...