beanshell脚本语法_shell脚本实战pdf免费

beanshell脚本语法_shell脚本实战pdf免费本文内容是BeanShell入门教程的中文化主要包含了以下内容1.快速入门2.基本语法3.脚本方法4.脚本对象5.范围值快速入门1.下载和运行BeanShell我们可以在http://www.beanshell.org上下载到BeanShell的最新版本,而且可以在图形化桌面模式或者命令行模式下运行。如果你只是想下载下来玩玩看,那么双击JAR文件,运行桌面版的就可以了。但是,或许你更想以后长期使用…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

本文内容是BeanShell入门教程的中文化主要包含了以下内容

1.快速入门

2.基本语法

3.脚本方法

4.脚本对象

5.范围值

快速入门

1.下载和运行BeanShell

我们可以在http://www.beanshell.org上下载到BeanShell的最新版本,而且可以在图形化桌面模式或者命令行模式下运行。

如果你只是想下载下来玩玩看,那么双击JAR文件,运行桌面版的就可以了。但是,或许你更想以后长期使用它,那么你应该把这个JAR文件加入到你的classpath中,以便更好的和你的类和应用一起工作。

你当然也可以添加BeanShell到你的Java扩展文件夹下,并且把它添加到你的classpeth中。(注意:如果你把BeanShell放在了扩展文件夹下,而且想和例如Jakarta Ant这样的BSF应用一起使用,你必须安装bsf.jar到相同位置)。

To install as an extension place the bsh.jar file in your

$JAVA_HOME/jre/lib/ext folder. (OSX users: place the bsh.jar in

/Library/Java/Extensions or ~/Library/Java/Extensions for individual users.)

Or add BeanShell to your classpath like this:

unix: export CLASSPATH=$CLASSPATH:bsh-xx.jar

windows: set classpath %classpath%;bsh-xx.jar

标注:你可以使用BeanShell中的addClassPath()和setClassPath()命令来修改classpath。

你当然也可以在GUI或者命令行模式下运行BeanShell。

java bsh.Console // run the graphical desktop

or

java bsh.Interpreter // run as text-only on the command line

or

java bsh.Interpreter filename [ args ] // run script file

当然BeanShell在你的Java应用中也是可以被调用的。例如:作为远程服务模式用来调试,作为一个servlet或者applet。更加详尽的内容可以参考“BeanShell的操作模式”一节。

2.BeanShell的GUI

BeanShell GUI是用来方便显示BeanShell的功能的。并不是打算替代某个IDE。包含BeanShell脚本功能的一款全功能的开发环境是jEdit编辑器。

如果使用BeanShell的GUI模式,将会打开一个控制台窗口。使用右键可以打开一个附加的控制台窗口和其他的工具例如简单的类浏览器。

每个控制台窗口运行一个独立的BeanShell解释器实例。图形化控制台支持基本的命令历史,行编辑,剪切和粘贴,还有类和变量名补全。在控制台上,你可以打开一个简单的编辑器窗口,在哪里你可以写脚本,并且使用eval选项来对附加控制台的工作空间或者新的工作空间中的文本进行求值运算。

3.Java语句和表达式

BeaShell理解标准的Java语句,表达式和方法声明。语句和表达式是Java方法中最基本的东西,例如:变量的声明和赋值,方法调用,循环,条件语句。

你可以像在Java中一样用他们,当然,在BeanShell中,你有更多的机会使用”loosely typed(松类型)”变量。也就是说,你可以省略掉变量类型,包括元类型和对象类型。如果你滥用了变量类型,那么BeanShell会抛出一个异常。

下面是一些例子:

foo = “Foo”;

four = (2 + 2)*2/2;

print( foo + ” = ” + four ); //print() is a BeanShell command//Do a loopfor (i=0; i<5; i++)

print(i);

//Pop up a frame with a button in itbutton = new JButton( “My Button” );

frame = new JFrame( “My Frame” );

frame.getContentPane().add( button, “Center” );

frame.pack();

frame.setVisible(true);

4.有用的BeanShell命令

在前面的例子中我们使用了便捷的内建BeanShell命令print()来显示值。print()做的事情和System.out.println()差不多,它确保输出内容到命令行中。print()显示一些类型的对象时比Java要啰嗦,例如数组类型。另外一个相关的命令是show(),自动显示你打入的每一行。

还有一些其他常用的BeanShell命令如下:

source(),run():读一个bsh脚本到当前解释器(interpreter)中,或者在新的解释器中运行这个脚本

frame():使用Frame或者JFrame显示一个GUI组件(component)

load(),save():从文件中加载一个序列化对象(serializable object),或者把它保存到文件中

cd(),cat(),dir(),pwd(),etc:类似于Unix中的命令

exec():运行一个本地应用(native application)

javap():打印一个对象的方法和域,类似于Java中的javap命令的输出

setAccessibility():使得私有的(private)和受保护的(protected)组件可被自由访问(unrestricted access)

标注:BeanShell命令并不是真正的内建的(built-in),而是从classpath自动加载的简单的BeanShell脚本,你可以向classpath中添加自己的脚本来扩展基本的命令集。

5.脚本方法

你可以声明和使用方法就像在Java的class中一样。

int addTwoNumbers( int a, int b ) {

return a + b;

}

sum = addTwoNumbers( 5, 7 ); //12

Bsh方法也允许动态的(松类型的)参数和返回类型。

add( a, b ) {

return a + b;

}

foo = add(1, 2); //3foo = add(“Oh”, ” baby”); //”Oh baby”

6.接口实现

注意:BeanShell中实现任何接口,都需要Java1.3或者更高版本。

你可以使用标准的Java匿名内部类语法来实现一个接口类型,如下所示:

ActionListener scriptedListener = new ActionListener() {

actionPerformed( event ) { … }

}

你当然也没有必要脚本化接口的所有方法。你可以选择脚本化那些你可能要调用的方法。若果你尝试调用一个没有被定义的方法,那么代码会抛出异常。如果你希望重载大量方法的行为-例如为logging产生一个伪适配器-你可以实现一个特殊的方法签名:invoke(name, args),这个方法用来处理未定义的方法被调用的情况。

ml = new MouseListener() {

mousePressed( event ) { … }

//handle the rest invoke( name, args ) { print(“Method: “+name+” invoked!”);

}

7.脚本对象

在BeanShell中,就像在JavaScript和Perl中,方法“闭包”允许你创建脚本对象。你可以让一个方法返回特殊值this从而让这个方法调用的返回值成为一个对象引用。在方法调用过程中,你可以使用这个引用指向任意的变量集。有用的对象当然包括了方法,所以在BeanShell脚本方法中可以在任意水平包含方法。如下所示:

foo() {

print(“foo”);

x=5;

bar() {

print(“bar”);

}

return this;

}

myfoo = foo(); //prints “foo”print( myfoo.x ); //prints “5”myfoo.bar(); //prints “bar”

如果相关“闭包”的东西看起来很陌生,不要担心。他只是对象语言进化过程中的必然步骤。你可以在以后看到更多解释。

在你的脚本中,Beanshell脚本对象(例如:像前面例子的myFoo一样的任何‘this’类型的引用)可以自动地实现任意Java接口类型。当Java代码调用接口中的函数时,相应的脚本函数将被调用来处理它们。BeanShell将会自动地转化你的脚本对象,当你试图把它传给一个使用了接口类型的参数的方法时。传递BeanShell之外的脚本引用时,你可以使用强制转换。后面会详细讲解。

8.在你的应用中调用BeanShell

你在你的应用中可以创建BeanShell解释器实例并且使用eval()或者source()命令来获取文本或者执行脚本。你或许想往脚本中传递值,那么可以使用后set(),或者从中获得结果值,那么可以使用get().

import bsh.Interpreter;

Interpreter i = new Interpreter(); //Construct an interpreteri.set(“foo”, 5); //Set variablesi.set(“date”, new Date() );

Date date = (Date)i.get(“date”); //retrieve a variable//Eval a statement and get the resulti.eval(“bar = foo*10”);

System.out.println( i.get(“bar”) );

//Source an external script filei.source(“somefile.bsh”);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/230750.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • VB学习总结「建议收藏」

    VB学习总结「建议收藏」无论是生活还是学习,都要不断的总结和思考。学习中,不可以偷懒,你对它偷懒,它就会对你更加偷懒;同样,没有规律和反思的生活是平淡如水,没有进步的,今天的我们应该能和昨天面对面,每天进步一点点。   这次的总结是对全部模块的总结,记录此刻的学习轨迹,以供以后反思学习,同时分享给大家,欢迎大家批评建议。      1.总结大纲——时间管理,计划同步    2.

  • java环境变量_java环境变量

    java环境变量_java环境变量1.PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。2.CLASSPATH环境变量。…

  • pytest 执行用例_测试用例一般执行多少次

    pytest 执行用例_测试用例一般执行多少次前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

  • Spring Security OAUTH2 获取用户信息

    Spring Security OAUTH2 获取用户信息1.user-info-uri与token-info-uri作用:二者皆是为了checktoken,并且顺带返回了用户信息。配置信息位置在资源服务器上。解释:下面代码列举的都是token-info-uri,user-info-uri不解释。user-info-uri原理是在授权服务器认证后将认证信息Principal通过形参绑定的方法通过URL的方式获取用户信息。当然它也有配套的Us…

  • 五大分布式事务,你了解多少?

    五大分布式事务,你了解多少?

    2020年11月20日
  • Navicat:Access violation at address xxxxxxxxx in module ‘navicat.exe’.Read of address xxxxxx

    Navicat:Access violation at address xxxxxxxxx in module ‘navicat.exe’.Read of address xxxxxx在navicat中如果报了这个错误,则表示内存越界,需要重新注册windows的动态链接库;解决方案:打开cmd;在命令行中输入for%1in(%windir%\system32\*.dll)doregsvr32.exe/s%1回车运行;等待动态链接库刷新完成,重启mysql和navicat即可。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号