Chicken Scheme 是否有相当于 Perl 的 $0 的东西?
如何可靠地获取ChickenScheme中的脚本名称?
似乎 -ss 占用了脚本名称,因此除非我使用点斜杠来运行脚本,否则它是不可见的。
scriptedmain.scm:
#!/usr/bin/env csi -q
(display (command-line-arguments))
(display "\n")
(exit)
跟踪:
$ ./scriptedmain.scm
(-q ./scriptedmain.scm)
wonko:Desktop andrew$ csi -ss scriptedmain.scm
()
How can I reliably get the script name in Chicken Scheme?
It seems that -ss eats up the script name, so it's not visible unless I use dot slash to run my scripts.
scriptedmain.scm:
#!/usr/bin/env csi -q
(display (command-line-arguments))
(display "\n")
(exit)
Trace:
$ ./scriptedmain.scm
(-q ./scriptedmain.scm)
wonko:Desktop andrew$ csi -ss scriptedmain.scm
()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是一个较晚的回复,因此可能对原始发布者没有用处。但对于任何其他可能遇到这个问题的人来说,简单的答案是使用参数:
这应该在所有情况下返回正确的名称。 此处的文档。
This is a late response, so may not be of use to the original poster. But to any others who may come across this question, the simple answer is to use the parameter:
This should return the correct name for all situations. Docs here.
(argv)
应该可以完成这项工作。示例:打印
(/usr/local/bin/csi -script ./test.scm)
(argv)
should do the job. Example:prints
(/usr/local/bin/csi -script ./test.scm)
scriptedmain.scm 将在以下情况下运行(main)并打印程序名称:
从解释器运行:
使用 shebangs 从解释器运行:
已编译:
已添加到 GitHub。
scriptedmain.scm will run (main) and print the program name in the following cases:
Run from the interpreter:
Run from the interpreter using shebangs:
Compiled:
Added to GitHub.