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)


相关推荐

  • 【超详细教程】Mac如何用QuickTime录屏soundflower录制屏内外声音(附视频演示教程)

    【超详细教程】Mac如何用QuickTime录屏soundflower录制屏内外声音(附视频演示教程)作者:齐木南子酱链接:http://www.i5seo.com/mac-own-software-recording-screen.html来源:长沙SEO霜天如何用mac自带软件录屏且录制屏内屏外声音?这个问题困扰了很多使用苹果mac笔记本的用户,本教程你能get到的3个技能点1.用macbook自带软件录屏(无屏内屏外声音)2.用macbook自带软件录屏+有屏内声音+…

  • Python 第三方模块 科学计算 SciPy模块1 简介,常数,IO「建议收藏」

    Python 第三方模块 科学计算 SciPy模块1 简介,常数,IO「建议收藏」一.介绍1.介绍:SciPy是1个Python开源库,在BSD授权下发布,主要用于数学/科学/工程计算.SciPy依赖于NumPy来提供方便快速的n维数组操作.组合使用NumPy+SciPy+Matplotlib可以在很大程度上替代MATLAB,并且功能更强大,编程更容易…

  • scrapy安装步骤_scrapy官网

    scrapy安装步骤_scrapy官网安装scrapy过程中出现各种包安装错误,所以自己一直看教程知道scrapy安装需要准备好各种环境。这些包按照从下到上的顺序下载,lxml这个包按下文教程安装。不想看过多文字和图片的懒人们可看教程视频:http://www.iqiyi.com/w_19rz36pjft.html利用pipinstall命令安装pywin32,pyopenssl.这两个包可在cmd安装成功pip…

  • CString和char*转换的理解

    CString和char*转换的理解

  • 展频技术是如何搞定时钟信号的辐射的呢_辐射电磁波的频率

    展频技术是如何搞定时钟信号的辐射的呢_辐射电磁波的频率先前我们说了说:为什么时钟信号比数据信号更容易引起辐射超标?为什么时钟信号比数据信号更容易引起辐射超标?并且做了试验,如果认真看过的话,就会明白,周期性的信号是窄带频谱,特定的频率的幅值会很高,这对认证测试来说非常的不利。而一般时钟信号都是周期信号,这在电路中是少不了的。有没有什么办法,改造下时钟的频谱,同时又不影响功能呢?答案是有的,那就是展频技术。展频技术的应用展频技术经常用于解决辐射问题,比如我们前面说的音频功放,需要接LC滤波器。就有的厂家通过展频技术,推出不需要LC滤波器.

    2022年10月25日
  • JSP、JavaBean原理和使用

    JSP、JavaBean原理和使用JavaServerPages:Java服务器端页面,也和Servlet一样,用于动态Web技术!最大的特点:写JSP就像在写HTML区别:HTML只给用户提供静态的数据 JSP页面中可以嵌入JAVA代码,为用户提供动态数据;…

发表回复

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

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