愉快地使用Groovy Shell
这是一篇有关Groovy Shell的帖子,以及它如何在日常工作中为您提供帮助(只要您是软件开发人员)。无论您使用哪种编程语言或技术,都可以从Groovy Shell中受益。唯一真正的要求是您能够编写(和阅读)小段Groovy代码。
入门
我认为Groovy shell的目的最好由官方文档来描述:
Groovy Shell,又名。groovysh是一个命令行应用程序,可轻松访问以评估Groovy表达式,定义类并运行简单的实验。
Groovy Shell包含在Groovy编程语言的发行版中,可以在 / bin中找到。要启动Groovy Shell,只需从命令行运行groovysh即可:
GROOVY_HOME\bin>groovysh
Groovy Shell (2.2.2, JVM: 1.7.0)
Type 'help' or '\h' for help.
--------------------------------------------------------------------
groovy:000>
现在,您可以在外壳中运行Groovy命令:
groovy:000> println("hu?")
hu?
===> null
groovy:000>
它支持变量和多行语句:
groovy:000> foo = 42
===> 42
groovy:000> baz = {
groovy:001> return 42 * 2
groovy:002> }
===> groovysh_evaluate$_run_closure1@3c661f99
groovy:000> baz(foo)
===> 84
groovy:000>
- (请注意,您必须跳过def关键字,以便以后使用变量和闭包)
Windows用户须知
我可以清楚地推荐Console(2),它是笨拙的cmd窗口的小包装。它提供了Tab支持,更好的文本选择和其他有用的功能。
不幸的是,在某些地区(包括德语)中,Groovy 2.2.0 Shell 在Windows 7/8上的箭头键存在问题。但是,您可以使用CTRL-P和CTRL-N代替UP和DOWN。作为替代方案,您可以使用旧的Groovy版本的外壳(来自Groovy 2.1.9的groovysh可以正常工作)。
那么,我们可以使用它吗?
我们可以做的最明显的事情是评估Groovy代码。如果您正在使用Groovy的应用程序上工作,这将特别有用。
也许您知道可以使用<<运算符将元素添加到列表中,但是不确定该运算符是否适用于地图?在这种情况下,您可以开始谷歌搜索或在文档中查找。或者,您可以将其键入Groovy Shell并查看其是否有效:
groovy:000> [a:1] << [b:2]
===> {a=1, b=2}
有用!
您不确定是否可以遍历枚举值?
groovy:000> enum Day { Mo, Tu, We }
===> true
groovy:000> Day.each { println it }
Mo
Tu
We
===> class Day
这是一个计算器!
Groovy Shell可用于简单的数学计算:
groovy:000> 40 + 2
===> 42
groovy:000>
groovy:000> 123456789123456789 * 123456789123456789123456789
===> 15241578780673678530864199515622620750190521
groovy:000>
groovy:000> 2 ** 1024
===> 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
groovy:000>
如您所见,Groovy可以很好地处理可能导致其他编程语言溢出的数字。Groovy使用BigInteger和BigDecimal进行这些计算。顺便说一句,您可以很快自己验证一下:
groovy:000> (2 ** 1024).getClass()
===> class java.math.BigInteger
更多可能
也许您需要某个网页的内容?使用Groovy可以轻松实现:
groovy:000> "http://groovy.codehaus.org".toURL().text<font></font>
===> <!DOCTYPE html><font></font>
<html><font></font>
<head><font></font>
<meta charset="utf-8"/><font></font>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/><font></font>
<meta name="description" content="Groovy Wiki"/><font></font>
...
也许出于某些原因,您只想要标签?
groovy:000> "http://groovy.codehaus.org".toURL().eachLine { if (it.contains('<meta')) println it }
<meta charset="utf-8"/>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta name="description" content="Groovy Wiki"/>
<meta name="keywords"
<meta name="author" content="Codehaus Groovy Community"/>
===> null
我确定您处于需要某些文本的url编码版本的情况:
groovy:000> URLEncoder.encode("foo=bar")
===> foo%3Dbar
当然,您无需记住确切的类和方法名称。只需输入前几个字符,然后按Tab键即可获得可能的选项:
groovy:000> URL
URL URLClassLoader URLConnection URLDecoder URLEncoder
URLStreamHandler URLStreamHandlerFactory
它也适用于方法:
groovy:000> URLEncoder.e
each( eachWithIndex( encode( every( every()
结论
在切换到Groovy Shell之前,我出于几乎相同的原因使用了Python Shell(即使我根本没有使用Python)。在过去的一年中,我使用了很多Groovy,很快我发现Groovy Web Console是用于测试和原型制作的非常有价值的工具。对我来说,Groovy Shell替换了这两个工具。显然,这是我不想错过的开发工具。
技术类文章精选
- java一行代码打印心形
- Linux性能监控软件netdata中文汉化版
- 接口测试代码覆盖率(jacoco)方案分享
- 性能测试框架
- 如何在Linux命令行界面愉快进行性能测试
- 图解HTTP脑图
- 将swagger文档自动变成测试代码
- 五行代码构建静态博客
- 基于java的直线型接口测试框架初探
- JUnit中用于Selenium测试的中实践
非技术文章精选
- 为什么选择软件测试作为职业道路?
- 写给所有人的编程思维
- 成为优秀自动化测试工程师的7个步骤
- 手动测试存在的重要原因
- 成为自动化测试的7种技能
- 自动化和手动测试,保持平衡!
- 自动化测试生命周期
- 如何在DevOps引入自动化测试
- Web端自动化测试失败原因汇总
愉快地使用Groovy Shell的更多相关文章
- 30分钟groovy快速入门并掌握(ubuntu 14.04+IntelliJ 13)
本文适合于不熟悉 Groovy,但想快速轻松地了解其基础知识的 Java开发人员.了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合.内置正则表达式和闭包. ...
- 一段发工资的shell代码
人事发工资条之前是一个个截图发到我们的邮箱里,看人事妹纸是一个善良而又美丽的姑凉,于是乎写了一段shell代码实现批量发短信至各个手机号.不多说了,上代码,其实很简单,我都不好意思上传,还是记录下吧, ...
- IntelliJ IDEA Groovy(转)
更新环境变量: source /etc/profile 验证是否成功: # groovy -version Groovy Version: 2.3.6 JVM: 1.7.0_67 Vendor: Or ...
- java中调用groovy
Groovy在Java中的应用,做几个小例子以备查 package com.boco.efficiency.groovy; import groovy.lang.Binding; import gro ...
- groovy——运行方式、基本语法、引入方式、metaClass
jvm运行groovy类有两种方式: 1.使用groovyc编译所有的*.groovy为java的*.class文件,把这些*.class文件放在java类路径中,通过java类加载器来加载这些类. ...
- 3 不用IDE开发groovy
1 不用IDE开发groovy 1.1 不用IDE开发的方法 可以在IDE中运行Groovy类或者脚本,但是Groovy也提供了其他运行途径.你能运行Groovy代码基于以下: · ...
- Groovy学习:第三章 Groovy开发环境
本章将继续深入Groovy语言,首先学习Groovy脚本,包括从命令行编译和运行Groovy脚本,Groovy Shell,和Groovy Console.你将学会使用Groovy语言来建立域对象.控 ...
- Shell系列(13)- read
前言 作用是往脚本中传递参数,之前文章的位置参数变量也有此功能,但是只适用于脚本的作者,为什么?第三方用户不知道这个脚本要传递哪些参数,这些参数分别是什么.本篇随笔read就可以实现上述功能,别且该命 ...
- Java工具
1. Groovy shell 可以在Java代码里执行脚本,可以将Java方法配置在文件里 依赖 <dependency> <groupId>org.codehaus.gro ...
随机推荐
- [洛谷P1144][题解]最短路计数
这道题可以用各种算法踩掉,我选择的是SPFA. 因为题目要求计数,所以我们开一个ans数组表示数量. 分两种情况讨论: 一:dis_v>dis_u+1 最短路被更新了,可以直接ans_v=ans ...
- 使用hutool进行二维码制作
2.在IDEA中使用代码块生成二维码
- dom元素的tabindex属性介绍及在vue项目中的应用
dom元素的tabindex属性介绍及在vue项目中的应用 tabindex属性作用 让普通dom元素变为可聚焦的元素 让普通dom元素可以参与顺序键盘导航(通常使用Tab键,因此得名). tabin ...
- zookeeper的java问题
执行bash ./bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /data/zookeeper-3.4.9/b ...
- 松软科技带你学前端:JavaScript 输出
JavaScript 不提供任何内建的打印或显示函数. JavaScript 显示方案 JavaScript 能够以不同方式“显示”数据: 使用 window.alert() 写入警告框 使用 doc ...
- HTML <input> 标签的 accept 属性
<form> <input type="file" name="pic" id="pic" accept="im ...
- 安全意识第八期丨OMG!发个帖子竟然摊上大事了
互联网时代,话在网上说.钱在网上花.事在网上办,这早已成为一种习惯,越来越多的人也倾向于通过网络来获取信息. 借助现代信息技术,网络传播者通过即时通讯工具.微博.朋友圈等渠道发布信息,虽然传播起来更便 ...
- 对vue-cli各个目录的理解 和 在 vue 中使用json-server
看了几章书,看到了vue模板,看不下去哦,就找了一个B站的vue视频来看,下面进行总结. 学习一个语言,框架,CRUD..先学会. 重点就是最为常用的几个语句.学得不多,感慨挺多.. 前提:下载好vu ...
- IOS-dequeueReusableCellWithIdentifier的应用
这是个uitableviewcell重用的函数.当一个列表中的布局相同只是数据不同时,我们可以重用我们的cell,不需要再重复创建.上面代码的意思是,先根据identifier去重用列表中找有没有可以 ...
- gradle+shell实现自动系统签名
前言 有时候我们的应用需要系统级的权限来实现一些功能(如静默安装),这时候需要给应用打上系统签名,常规操作打包apk,解压apk,删除META-INF中CERT.RSA和 CERT.SF,然后压缩,用 ...