2017-02-09 147 views
1

我刚安装了CygWin和curl,因为我想做一些无关的事情。但现在,我想在CygWin中执行一个.lua文件,并且希望结果在当前窗口CygWin窗口上打印。我希望它能像打开CMD一样,然后做cd <directory where the file is>。然后只需要<filename>.lua并打印结果。那么我该如何去做呢?对不起,我对Linux,Unix,CLI等有点新鲜,而且我对bash命令了解不多。如何在CygWin中执行.lua文件?

我尝试使用该方法从这里:How do I execute a file in Cygwin? 我只是做./<filename>.lua,我得到

./<filename>.lua: line 1: syntax error near unexpected token `"Hello world"' 
./<filename>.lua: line 1: `print("Hello world")' 

文件只是有

print("hello world") 
+1

你安装了lua包吗? 'cygcheck -c lua'从cygwin终端执行 – matzeri

+0

签出文件编码。 – moteus

+0

我做过'cygcheck -c',而lua没有在那里列出。如果我执行'cygcheck -c lua',它只是说'Package Version Status',但是lua没有列出。我不知道我需要为cygwin64安装lua吗?哦,对不起。我会早些时候回答,但是我一整天都忙于做某件事,而我完全忘记了这一点。 @moteus什么? – rumpled105

回答

1

如果你的文件被标记为可执行文件,运行./<filename>.lua将默认执行该文件作为外壳脚本(即,shbash,zsh等)。这会导致您看到的错误,很容易重新创建。

bash

$ echo 'print("Hello world")' > script.sh && chmod +x script.sh && ./script.sh 
./script.sh: line 1: syntax error near unexpected token `"Hello world"' 
./script.sh: line 1: `print("Hello world")' 

你需要做的就是确保安装的Lua(重新运行Cygwin的安装GUI,或使用像apt-cyg的工具),以及位于您$PATH的第一件事。

然后,不要直接执行该文件,而应使用Lua解释器运行它。

$ lua <filename>.lua 

或者,使用shebang指令来指示该文件应该如何被执行的外壳。

+0

哇,我甚至不知道你用那个'bash'做了什么。再说一遍,我对Linux,Unix,CLI等并不是很满意。无论如何,我做了你所说的。我搜索了apt-cyg,并安装了它。但我实际上安装了带有Cygwin安装GUI的'lua5.1'。所以我继续做了'lua-5.1 .lua'并打印出来。谢谢你们帮助像我这样的noob。 – rumpled105

+0

@ rumpled105'echo'将其参数输出到标准输出; '>'将输出重定向到'script.sh'文件,覆盖其内容。如果最后一个命令成功('0'的返回状态),'&&'执行下一个命令。 'chmod + x'将文件标记为可执行文件。 '。/ script.sh'运行该文件。你会通过在shell中玩耍并阅读一些文档来及时挑选这些东西。确保接受答案,如果它有帮助,所以其他人知道你的问题已经解决。干杯。 – Oka

+0

我建议使用'#!/ usr/bin/lua' shebang行是执行此操作的首选方法。 –