如何解决如何在J中使用命令行参数
在J控制台模式下,如果键入ARGV,我将获得jqt.exe的完整路径。但是,当我尝试将一些字符串传递给J脚本文件时,会出现“语法错误”或“域错误”。参数传递以及检索或显示如何工作?
解决方法
如果要写入文件,则可以使用以下信息传递信息
'string' 1:!2 'filepath/jscriptfile'
请参阅https://www.jsoftware.com/help/dictionary/dx001.htm
如果要将参数传递给脚本中声明的动词,则必须首先加载脚本
load 'filepath/jscriptfile'
然后,只要脚本包含使用=:
分配的动词,以便该动词不是脚本文件的本地动词,您就可以将字符串传递给已加载的动词。
verb 'string'
,
与仅显示其参数的脚本的交互:
$ cat args.ijs
#! /usr/bin/env j
exit echo each ARGV
$ ./args.ijs
j
./args.ijs
$ ./args.ijs 1 2 3
j
./args.ijs
1
2
3
$ ./args.ijs '1 2' 3
j
./args.ijs
1 2
3
ARGV
是该脚本的带框参数的列表。它的工作方式与任何带框的文字列表一样,如果您是域错误,则源于脚本中的某些动词,该动词具有给定的参数,但未定义要处理。如果您遇到语法错误,那是因为您的脚本中有些语法不正确。这样与ARGV
无关。
也许您期望数字参数是数字?参数始终以字符串形式传递。这是一个使用率稍高的脚本,它显示其参数的阶乘和:
#! /usr/bin/env j
sumfact =: [: +/ [: ! x:
3 : 0''
if. (#ARGV) > 2 do.
echo sumfact > 0&". each 2}.ARGV
exit 0
else.
echo 'usage: ',(1{::ARGV),' <n1> [<n2> ... <nn>]'
exit 1
end.
)
使用方式:
$ ./sumfact.ijs
usage: ./sumfact.ijs <n1> [<n2> ... <nn>]
$ ./sumfact.ijs 0
1
$ ./sumfact.ijs 5
120
$ ./sumfact.ijs 5 5 5
360
$ ./sumfact.ijs 100
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
#!
之后的文字并不重要;我使用/usr/bin/env j
是因为我的路径中有一个j
,这是J安装中常见的bin/jconsole
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。