【Java可执行命令】(十四)脚本执行工具jrunscript :在命令行环境下交互式执行一些简单的脚本或测试代码片段~
Java可执行命令之jrunscript
- 1️⃣ 概念
- 2️⃣ 优势和缺点
- 3️⃣ 使用
- 3.1 语法格式
- 3.2 启动 jrunscript 直接执行脚本
- 3.3 可选参数:-l < language>
- 3.4 可选参数:-e < script>
- 3.5 可选参数:-f < script file>
- 3.6 注意事项
- 4️⃣ 应用场景
- 🌾 总结
1️⃣ 概念
Java平台拥有强大的编程语言和生态系统,为了方便开发人员在命令行环境下快速执行一些简单的脚本或测试代码片段,Java引入了 jrunscript
命令。jrunscript
旨在提供一个交互式的脚本环境,使开发人员能够使用多种脚本语言来处理和操作Java对象。
jrunscript
是Java Development Kit (JDK)
中的一个命令行工具,允许在命令行环境中执行各种脚本。它支持多种脚本语言(如JavaScript
、Python
、Ruby
等),并且可以与Java类和库进行交互与通信。
jrunscript
基于Java的脚本引擎接口(JSR 223)实现。它使用不同的脚本引擎来解析和执行不同的脚本语言,并使用Java与脚本语言之间的桥接功能进行交互。
2️⃣ 优势和缺点
优点:
- 简单易用的命令行界面,无需建立独立的项目或编写复杂的Java代码;
- 支持多种脚本语言,灵活满足不同的开发需求;
- 可以直接与Java类和库进行交互,利用Java的丰富功能和库。
缺点:
- 功能相对较弱,不适合处理复杂的应用程序逻辑;
- 缺乏完整的集成开发环境 (
IDE
) 的功能和调试器等工具。
3️⃣ 使用
3.1 语法格式
jrunscript
命令的使用语法如下:
jrunscript [options] [arguments...]
其中,[options]
表示可选参数,[arguments...]
表示自定义参数。
将 jrunscript
支持的各种可选参数汇总如下:
参数 | 说明 |
---|---|
-classpath <path> 或-cp <path> | 指定查找用户类文件的位置 |
-D <name>=<value> | 设置系统属性 |
-J <flag> | 将<flag>直接传递到运行时系统 |
-l <language> | 使用指定的脚本语言 |
-e <script> | 执行给定内联脚本 |
-encoding <encoding> | 指定脚本文件使用的字符编码 |
-f <script file> | 执行给定的外部脚本文件 |
-f - | 交互模式,从标准输入中读取脚本。如果使用此选项,则这应该是最后一个-f选项 |
-help 或-? | 打印此命令使用信息并退出 |
-q | 列出所有可用的脚本引擎并退出 |
从上边信息可以看到, jrunscript
命令对于脚本解释执行的各种操作支持,大家可以根据自己的需求参照表格选择所需操作命令。
知道了命令的可选参数后,下面介绍命令使用需要注意的地方:
- 当使用了自定义参数
[arguments...]
,并且没有使用-e
或-f
可选参数选项,则首先自变量是脚本文件,其余的自变量(如果有的话)将被传递作为脚本参数 - 当使用了
[arguments..]
和-e
或-f
选项,则所有自定义参数作为脚本参数传递; - 当自定义参数、
-e
、-f
都缺少(未使用)时,则使用交互模式。
而下面主要介绍jrunscript
工具的一些常用使用方式:
- 启动
jrunscript
: 通过在命令行中直接运行jrunscript
来启动工具; - 选择脚本语言: 使用
-l <language>
选项来指定要使用的脚本语言。例如:jrunscript -l javascript
; - 执行脚本文件: 使用
-f <file>
选项指定要执行的脚本文件。例如:jrunscript -f script.js
; - 直接执行脚本: 在命令行中直接输入脚本语句,并按回车键执行。例如:
println("Hello, World!")
; - 加载Java类和库:使用
-classpath
选项指定类路径,以便在脚本中使用Java类和库。
3.2 启动 jrunscript 直接执行脚本
启动 jrunscript
并直接执行脚本是使用 jrunscript
命令的一种常见用法。这种方法允许在命令行中输入脚本代码,并立即执行它,而无需编写或加载外部脚本文件。下面是启动 jrunscript
直接执行脚本的过程:
(1)打开终端或命令行窗口,输入jrunscript
以启动工具;
(2)在命令行提示符下,输入脚本语句,然后按 Enter
键执行。例如,如果使用JavaScript
作为脚本语言,可以输入以下内容:
> println("我是小山");
这将输出 “我是小山
” 到控制台。
如果使用其他脚本语言(如Python
或 Ruby
),则需要根据该语言的语法编写相应的脚本代码。
(3)可以继续在命令行中输入和执行其他脚本语句,或者按Ctrl+C
退出。
在命令行中直接运行 jrunscript
启动工具,然后在命令行中直接输入脚本语句,并按回车键执行的流程如图所示:
通过启动 jrunscript
直接执行脚本,可以快速测试和验证脚本代码,执行简单的计算、数据处理或其他任务。这种方法对于需要快速测试和调试脚本的开发人员来说非常方便,同时也适用于在交互式环境中快速执行一些临时脚本代码的场景。
3.3 可选参数:-l < language>
jrunscript -l <language>
用于指定要使用的脚本语言。通过此选项,可以选择在 jrunscript
环境中使用的脚本语言解释器。通过 -l
选项后面跟随脚本语言的名称来选择特定的脚本语言解释器。例如:
jrunscript -l javascript
这将使用 JavaScript
作为脚本语言加载 jrunscript
,并提供交互式环境。 目前,jrunscript
支持多种内置的脚本语言解释器,如 JavaScript、Python、Ruby
等。
下面演示命令的使用,首先创建一个输出六六乘法表信息的 js
脚本:
建好脚本文件之后,我们通过命令行输入命令执行来测试脚本执行:
jrunscript -l javascript multiplicationTable.js
运行结果如图所示:
以上代码根据提供的行数和列数生成六六乘法表。可以通过更改 rows
和 cols
变量的值来生成不同大小的乘法表。
使用不同的 -l
参数,可以根据需要选择支持的特定脚本语言并执行相应的脚本代码。启动 jrunscript 时,指定 -l
参数后,将进入与所选脚本语言对应的交互式脚本环境,可以输入和执行该脚本语言的代码。因此,该选项允许开发人员在同一个 jrunscript
命令中使用多种脚本语言来执行不同类型的任务或测试脚本代码。
3.4 可选参数:-e < script>
jrunscript -e
:这是使用 jrunscript
命令执行一行内联脚本的选项。可以在命令行中直接输入脚本语句,并通过 -e
选项告诉 jrunscript
执行该脚本语句。例如:
jrunscript -e "print('Hello, 小山!')"
此命令将会执行一个简单的内联脚本,输出 “Hello, 小山!
”。
执行结果如图所示:
3.5 可选参数:-f < script file>
jrunscript -e
和 jrunscript -f
是 jrunscript 命令的两种不同用法,它们在执行脚本时有所区别。
jrunscript -f
:使用命令执行外部脚本文件的选项。需要通过 -f
选项指定要执行的脚本文件的路径。例如:
jrunscript -f script.js
此命令将会加载并执行名为 “script.js” 的外部脚本文件。
因此,jrunscript -e
适用于一次性执行简单的内联脚本语句,而 jrunscript -f
则适用于加载和执行外部存储的脚本文件。使用不同的选项,可以根据具体需求选择合适的方式来执行脚本代码。
3.6 注意事项
- 脚本语言解释器需要事先安装在系统上;
jrunscript
功能相对于大型项目或复杂业务逻辑较弱,不建议作为生产环境中的首选工具;- 确保只执行可信赖的脚本,以防止潜在的安全问题。
4️⃣ 应用场景
- 快速验证简单算法或测试代码片段;
- 执行一些简单的任务,如文件处理、数据转换等;
- 演示和教学目的,以便在命令行环境中展示某种功能或语言特性。
🌾 总结
jrunscript
是一个方便的命令行工具,使开发人员能够在交互式环境中快速执行脚本和测试代码。它支持多种脚本语言,并且可以与Java进行无缝交互。尽管功能相对简单,但在某些情况下,jrunscript
可以作为快速原型、数据处理或简单任务执行的有用工具。

相关文章:

【Java可执行命令】(十四)脚本执行工具jrunscript :在命令行环境下交互式执行一些简单的脚本或测试代码片段~
Java可执行命令之jrunscript 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 启动 jrunscript 直接执行脚本3.3 可选参数:-l < language>3.4 可选参数:-e < script>3.5 可选参数:-f < script file>3.6 注意事项 4️…...

eclipse Java Editor Templates
Window - Preferences - Java - Editor - Templates date ${currentDate:date(yyyy.MM.dd)}...

vue SKU已知sku.tree算出sku.list类目值和id
已知sku.tree算出sku.list类目值和id <van-skuref"sku"v-model"showBase":close-on-click-overlay"closeOnClickOverlay":goods"skuData.goods_info":goods-id"skuData.goods_id":hide-stock"skuData.sku.hide_stoc…...

error C4430 缺少类型说明符 - 假定为 int。注意 C++ 不支持默认 int
出现原因:两个类头文件相互包含 使用声明类代替头文件包含...

Embedding入门介绍以及为什么Embedding在大语言模型中很重要
Embeddings技术简介及其历史概要 在机器学习和自然语言处理中,embedding是指将高维度的数据(例如文字、图片、音频)映射到低维度空间的过程。embedding向量通常是一个由实数构成的向量,它将输入的数据表示成一个连续的数值空间中…...
暑假刷题第20天--8/3
B-序列的与和_2023河南萌新联赛第(四)场:河南大学 (nowcoder.com)(dfs) #include<iostream> #include<string> using namespace std; #define ull unsigned long long int n,k; ull a[21]; ull ans0; int…...
docker容器内的django启动celery任务队列
问题1: celery任务队列一般要使用redis,但是容器内的django要访问本机的redis是十分麻烦的 解决2: 在容器内安装redis,或者单独启动一个redis的容器,我是单独启动一个redis容器 安装redis镜像docker pull redis启动…...

linux文件描述符fd
文件描述符 fd是一个>0 的整数 每打开一个文件,就创建一个文件描述符,通过文件描述符来操作文件 预定义的文件描述符: 0:标准输入,对应于已打开的标准输入设备(键盘) 1:标准输出,对应于已打开的标准输出设备(控制台) 2.标准错误…...
【深度学习】各个开源库总结及实战-总目录
前言 此专栏主要是用MMCV和PaddlePaddle,它们都是优秀的开源库,用于计算机视觉和深度学习任务。MMCV提供了丰富的计算机视觉工具和算法,基于PyTorch框架,适合对PyTorch熟悉的用户。PaddlePaddle是百度开发的深度学习平台,提供易用且高性能的深度学习框架。 此专栏主要包括…...

Unity Shader:闪烁
还是一样的分为UI闪烁和物体闪烁,其中具体可分为:UI闪烁、物体闪烁与半透明闪烁 1,UI闪烁 对于UI 还是一样的,改写UI本身的shader: Shader "UI/YydUIShanShder" {Properties{[PerRendererData] _MainTex(…...
c++开发模式桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 #include <iostream> using namespace std;// Abstractionclass Abstraction { public:virtual void Op…...
javaScript 树形结构 递归查询方法。
1. 函数递归定义 程序调用自身的编程技巧称为递归( recursion)。 2.使用条件 1.存在限制条件,当满足这个限制条件的时候,递归便不再继续。 2.每次递归调用之后越来越接近这个限制条件。 3.既然是自己调用自己,那么整个…...

MySQL语法2
DQL语句介绍 DQL是数据查询语言,用来查询数据库中表的记录 DQL-基本查询语句 SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVIMG 分组后条件列表 ORDER BY 排列字段列表 LIMIT 分页参数 讲解过程:基本查询、条件查询…...

Mysql on duplicate key update用法及优缺点
在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,一般思路是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql…...

【Linux】-进程概念之进程优先级(如何去进行调度以及进程切换),还不进来看看??
💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …...

《在细雨中呼喊》阅读笔记
《在细雨中呼喊》阅读笔记 2023年2月5号在家读完,本书就是以作者者回忆的形式来写,男一号叫孙光林,有一个哥哥孙光平,一个弟弟叫孙光明,父亲叫孙光才。书中写了四篇故事。 第一篇写的就是作者对于老家生活的回忆 小的时…...

01-1 搭建 pytorch 虚拟环境
pytorch 管网:PyTorch 一 进入 Anaconda 二 创建虚拟环境 conda create -n pytorch python3.9注意要注意断 VPN切换镜像: 移除原来的镜像 # 查看当前配置 conda config --show channels conda config --show-sources# 移除之前的镜像 conda config --…...

RocketMQ 事务消息
事务消息是 RocketMQ 的高级特性之一 。这篇文章,笔者会从应用场景、功能原理、实战例子三个模块慢慢为你揭开事务消息的神秘面纱。 1 应用场景 举一个电商场景的例子:用户购物车结算时,系统会创建支付订单。 用户支付成功后支付订单的状态…...
Windows安装ElasticSearch
安装环境:java环境。新版本需要安装高版本的java,所有本次安装的为 7.x版本的ElasticSearch 。所以要java11 1、安装java11 2、下载 Elasticsearch 安装包 官网地址:(https://www.elastic.co/cn/) 安装包下载地址:https://www…...

【深度学习】SMILEtrack: SiMIlarity LEarning for Multiple Object Tracking,论文
论文:https://arxiv.org/abs/2211.08824 代码:https://github.com/WWangYuHsiang/SMILEtrack 文章目录 AbstractIntroductionRelated WorkTracking-by-DetectionDetection methodData association method Tracking-by-Attention Methodology架构概述外观…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...