Эта следующая программа преобразует текстовый файл из формата Windows в формат POSIX (это означает, что она переводит последовательность символов возврата каретки в новую строку)
local inp = assert(io.open(arg[1], "rb"))
local out = assert(io.open(arg[2], "wb"))
local data = inp:read("a")
data = string.gsub(data, "\r\n", "\n")
out:write(data)
assert(out:close())
Вот пример, который я хочу преобразовать
print("Hello World!")
print("\r\n")
Мы можем вызвать скрипт из оболочки, используя формат lua [options] [script [args]]. Итак, я набираю prog.lua, который является файлом lua, и файл с примером, который я хочу преобразовать, называется example.lua, чтобы он сохранялся в arg [1] и arg [2]:
>prog.lua exampe.lua example.lua
после этого я получаю эту ошибку:
C:\Program Files\Lua\5.3\prog.lua:1: bad argument #1 to 'open' (string
expected, got nil)
stack traceback:
[C]: in function 'io.open'
C:\Program Files\Lua\5.3\prog.lua:1: in main chunk
[C]: in ?
Я думаю, что это вывод из первого аргумента вызова функции в io.open (arg [1], "rb") в первой строке. Но я не могу понять, почему происходит ошибка, поскольку файл примера должен храниться в arg [1] и arg [2], но конвертер все равно выдает ошибку.
Какие-нибудь решения, чтобы я мог решить эту проблему?
Заранее спасибо.