@lua5.1.exe -e "_,_,b=io.input([[%~f0]]):read('*l','*l','*a');assert(loadstring('\n'..b,[[%~f0]]))()" @exit /b %ERRORLEVEL% print('ahaha') x
5行目にわざと Lua としては不適切な文字 x
を入れている。これを実行すると
lua: (command line):1: [string "C:\Users\USERNAME\foo.cmd"]:5: syntax error near < eof> stack traceback: [C]: in function 'assert' (command line):1: in main chunk [C]: in ? exit status 1
5行目がおかしいというエラーがちゃんと出る。x
を消すと
$ foo ahaha
とちゃんと実行される。
- インタプリタ無改造! Lua on Windows で shebang - Qiita
- Lua 5.3 向け。5.1 には、このようなラベル構文はないので、そのまま使えない