2017-06-30 9 views
2

私はLua 5.3プログラムを書いており、引数を渡す必要があります。私はargテーブルを使用して最初の引数:arg[1]を取得しますが、ファイルに引数を渡したにもかかわらず、スクリプトにしたがって1番目の引数はnilです。ここで私がluaスクリプトに渡す引数は無しです。

は、私が書いたコードは次のとおりです。

local strin = arg[1]:sub(2,arg[1]:len()-1) -- to remove the quote marks 
local i = 0 
for W in strin:gmatch(".") do 
    i = i + 1 
    if W == " " or W == "\t" then strin = strin:sub(i+1) else break end 
end 
print(strin) 

私はこのようなファイルに引数を渡す:

C:\Users\WhiteKid\Documents\Scripts>RemoveWhiteSpace.lua "  hello world!" 

それはそれがあるとき、argは[1] nilの値であると考えてない。 Lua 5.3で引数をluaスクリプトに渡す方法がありますか?

+0

最小のスクリプト 'for k、v対(arg)do print(k、v)end'はどうなりますか? – nobody

+0

私は2つの異なる値に割り当てられた2つのキーを得ました。 –

+0

-1 = lua53.exeへのパス 0 =スクリプトファイルへのパス –

答えて

2

.luaスクリプトを直接呼び出すので(C:\Users\WhiteKid\Documents\Scripts>RemoveWhiteSpace.lua " hello world!")、あなたはluaインタプリタとの関連付けがあるようです。その関連で呼び出す通訳者に%1または%*を渡す必要があります。あるいは、Luaインタプリタを呼び出してスクリプト名とパラメータを渡すと、期待通りに動作するはずです。

また、arg[1]が存在するかどうかをチェックし、引用符もそこにあるかどうかを確認する必要があります(パラメータがスクリプトに到達する前に削除される可能性があるため、常に期待する必要はありません)。

関連する問題