Gox脚本的各种执行方式-GX2

Gox语言作为轻巧的脚本语言,编写的代码执行方式有多种选择,相较于其他语言可以说是非常丰富的。并且Gox语言完全绿色,只需要下载一个主程序文件,即可运行包括GUI图形界面在内的各种脚本代码。官网在这里,另外还可以访问Gox的Github页面Gitee页面获取最新版本。

那么,我们就来看看Gox语言的各种花式执行方式吧。

  • 正常执行

在终端窗口(例如Windows下为命令提示符,即CMD)中执行类似下面的命令,即可运行名为script1.gox的Gox语言脚本文件。

gox script1.gox

注意:Gox语言的代码必须以UTF-8格式编码。

 

  • 拖拽执行

对于一些不熟悉命令行操作的人,可以直接将后缀(扩展名)为.gox的文件用鼠标拖拽至下载后的gox可执行文件上即可执行。

 

  • 双击直接执行

同样地,不喜欢命令行方式的,可以在操作系统中设置文件关联,将.gox后缀(扩展名)的文件直接用gox程序打开执行,这样只需鼠标双击或者选中后按回车键(MacOS是按Command+O键)就可以执行Gox脚本文件了。

 

  • 直接执行GUI图形界面程序(不显示终端窗口)

如果脚本不需要命令行窗口,可以直接用goxg代替gox来执行脚本,这样不会出现终端窗口(Windows上黑色的CMD窗口),还可以设置.goxg后缀的文件默认用goxg程序打开,这样将只有GUI界面的脚本改为.goxg后缀后,就可以直接双击执行该文件了。

 

  • 自动执行默认脚本(可用于分发应用脚本)

Gox主程序启动时,会检查其所在的文件夹/目录下是否有名为auto.gox的文件,如果有则会自动执行该脚本。这是为了让开发者发布脚本方便,只需将gox主程序和名为auto.gox的脚本文件打包在一起分发就可以了,这样别人直接双击gox执行文件就会自动执行该脚本。如果不希望发布的脚本改名为auto.gox,可以在auto.gox文件中用run、runCode或runScript函数运行该脚本,这样两个脚本和一个gox主程序一起分发就可以了。

注意:如果是使用LCL库的GUI图形界面程序,最好连同lcllib.dll等运行库一起分发,避免临时下载(虽然程序运行时会自动根据需要下载)。同样地,如果使用了Sciter库来做GUI界面,最好连同sciter.dll一起发布(Linux和Mac上设置稍复杂,请参考Sciter官网介绍)。

另外,Gox还支持自动执行的批处理脚本,请参看后面批处理的说明。

 

  • 启动图形化代码编辑器,并可以在编辑器中修改和运行代码

 

gox -edit script1.gox

 

  • 直接启动图形代码编辑器,编辑新的Gox脚本并可以执行

gox -edit

 

  • 以系统默认的打开方式打开Gox脚本,一般用于编辑Gox代码文件,此时需要现在系统里关联好.gox文件的默认打开方式

gox -open code1.gox

 

  • 在REPL环境(直接执行gox程序不带参数将进入交互式编程环境REPL)中,直接运行run()函数,可以弹出文件选择框选择执行某个脚本文件

 

  • 在Gox代码中执行另一段脚本代码,使用runScript函数

runScript函数第二个参数是运行脚本的模式mode,具体的进一步使用方法,请参考Gox语言的文档

 

  • 在Gox代码中,直接使用run函数,直接运行一个指定的Gox脚本文件。

 

这两种方法可以也用于加载自己编写的Gox语言库文件。

 

  • 直接运行网络上的某个脚本

gox -remote https://example.com/script1.gox

 

  • 从剪贴板执行某个脚本

gox -clip

可以直接从系统剪贴板获取文本内容,作为脚本直接运行,命令行参数仍然可以有

 

  • 根据配置文件运行某个脚本

gox -cloud script1.gox

根据gox配置目录下(配置目录的查找原则是:先查找C:\gox或/gox下,无法存取则改为gox执行程序的目录)的cloud.cfg文件中的内容作为前缀来执行远程脚本

gox -local script1.gox

根据gox配置目录下的localScriptPath.cfg文件中的内容作为前缀来执行本地目录脚本

gox -ssh=file script1.gox

根据gox配置目录下的ssh.cfg文件中的内容作为前缀来执行远程服务器上的某目录下的脚本,其中的内容可以是类似host:port:username:password:remotedir/ 这样

 

  • 直接执行

对于开发人员,可以直接使用下述方式执行代码:

gox -example basic.gox

可以直接运行Gitee上gox库中的例子代码。

gox -gopath basic.gox

可以运行本地GOPATH下gox库中的例子代码。

上述两种情况时,后缀.gox可以省略。

 

  • 魔法代码/数字(MN)

另一种更方便的方式是魔法代码(Magic Code/Number,简称MN),即根据一个数字来执行代码。例如,执行下面的代码(确保可以访问网络):

gox 18

将执行一段例子代码,结果如下:

C:\Users\Administrator>gox 18
Calculator by TopXeQ V0.9a
Please enter the expression: 7*98-(1-0.71)
result: 685.71

C:\Users\Administrator>

我们可以用-view参数来查看魔法数字为18的代码:

C:\Users\Administrator>gox 18 -view
pln("Calculator by TopXeQ V0.9a")

paraT = trim(getParameter(os.Args, 2, ""))

if paraT != "" {
        expression = paraT
} else {
        expression = getInputf("Please enter the expression: ")
}

result = eval(expression)

println("result:", result)

pass()

C:\Users\Administrator>

当然,也可以用重定向将代码保存下来修改:

C:\Users\Administrator>gox 18 -view > test.gox

C:\Users\Administrator>

这样,MN为18的代码就被保存下来到test.gox文件中,可以据此再进行修改。

具体不同魔法代码,请联系软件发布者获取,主要的例子MN代码可以在源代码的magic目录中查看。

 

  • 批处理

Gox也支持批处理,即一行一行处理多个Gox代码文件,一般将这种文件命名为后缀为“.gxb”的文件中,每行写一条命令行即可,即一般执行Gox代码的命令行把第一个Gox主程序这个去掉即可。即,如果原来命令行为:

gox -verbose test.gox

那么,写入Gox批处理文件中应为:

-verbose test.gox

下面一个批处理文件例子,文件名为auto.gxb,其中内容是:

// gxb
basic.gox
18
basic.gox -verbose

注意,其中可以写注释行,也是以“//”开头,注释行将被忽略。这样,basic.gox文件将被执行两次,中间还将执行一次魔法数字为18的代码,第二次执行basic.gox时,将带上开关参数-verbose。在批处理中的Gox代码最好用全局变量argsG来处理命令行参数而不是os.Args,argsG将保存正在执行的批处理的这一行。

Gox中,将有三种形式让Gox将代码作为批处理文件来处理:

  • 后缀为.gxb的文件,将自动被作为批处理文件处理
  • 文件中第一行如果以“// gxb”开头,该文件将被按批处理文件处理,无论文件名后缀是什么
  • Gox执行时,命令行中如果带有-batch参数,也将忽略文件名后缀按批处理进行

与auto.gox文件类似,如果执行Gox主程序时没有带参数,当前目录下如果存在auto.gxb文件时,将自动按批处理文件执行auto.gxb。

推荐阅读更多精彩内容