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

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

注意,Ubuntu系统运行Gox语言时需要事先安装GTK3的环境,执行下述命令即可安装:

apt install libgtk-3-dev

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

  • 正常执行

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

gox script1.gox

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

 

  • 拖拽执行

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

 

  • 双击直接执行

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

 

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

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

 

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

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

注意:如果使用了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目录中查看。

 

  • 从命令行执行脚本

也可以直接在命令行中执行脚本代码,使用-run参数即可,例如:

D:\tmpx>gox -run pln(1.2+3)
4.2

有时候代码中含有双引号等特殊字符或需要执行多行代码时,可以使用-urlDecode参数并将代码按URL编码(escape)的方式输入即可,例如:

D:\tmpx>gox -run -urlDecode a=md5(%22abd%22)%0Apln(a,1.2%2B3)
4911e516e5aa21d327512e0c8b197616 4.2

相当于执行了下面的代码:

a=md5("abd")
pln(a,1.2+3)

另一种从命令行执行脚本的方式是:直接使用-cmd参数

gox -cmd="pln(\"1+2\" + \"ab c\")"

相当于执行了 pln("1+2" + "ab c")这行代码。注意,-cmd=后的代码可以用双引号括起来,防止其中出现空格的问题,如果代码中含有双引号,如果是单行代码,可以用转义符来讲双引号转义。

如上所示,执行单行的代码时,可以直接在命令行中用转义符“\”,也可以加-urlDecode参数来执行多行代码:

gox -urlDecode -cmd="pln(%221%2B2%22%20%2B%20%22ab%20c%22)%0Apln(9*9)"

相当于执行了下面两行代码。

pln("1+2" + "ab c")
pln(9*9)

*gox主程序执行时如果带 -run 参数,将直接执行后面的代码,如果是多行或有特殊字符的情况,可以将其urlEncode一下,可以在gox执行后用urlEncode或urlEncodeX函数来进行,例如:

D:\tmpx# gox
> urlEncodeX(`systemCmd("Rundll32.exe", "user32.dll,LockWorkStation")`) 
systemCmd%28%22Rundll32.exe%22%2C+%22user32.dll%2CLockWorkStation%22%29
> 

 

  • 批处理

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。

你可能感兴趣的:(Gox脚本的各种执行方式-GX2)