Passing arguments into Lua
Platform: |
OEM719, OEM729, OEM7500, OEM7600, OEM7700, OEM7720, PwrPak7, CPT7, CPT7700, SMART7 |
To pass arguments into Lua, the script name and arguments must be enclosed within double quotes. The arguments are stored within the arg variable in Lua, which is a table of strings.
The example below shows how to iterate through the arguments and demonstrates some of the implications of the fact that the arguments are strings.
-- Print the script name
print(string.format('Script Name: "%s"',arg[0]))
FormatString = '%-10s%-10s%-15s%-15s'
print(string.format(FormatString,'Arg#','Type','String','Number'))
-- Iterate through the arguments
Sum = 0
NumberOfTwenties = 0
for i = 1,4 do
-- Print some information about the argument
-- NOTE: The type of these arguments is always "string"
print(string.format(FormatString,i,type(arg[i]),arg[i],tonumber(arg[i])))
-- Check if the string represents a number
if (tonumber(arg[i]) ~= nil) then
-- If the string represents a number, Lua will automatically
-- convert the string to a number for arithmetic
Sum = Sum + arg[i]
end
-- Since the arg values are always of type "string"
-- a direct comparison with a number will always fail
if (arg[i] == 20) then
NumberOfTwenties = NumberOfTwenties + 1
end
end
print('')
print(string.format("Sum of Number Arguments: %d",Sum))
print(string.format("Number of 20s found: %d",NumberOfTwenties))
Here is how to call this script using the LUA command. Note how the string "20" is not considered equal to the number 20.
lua prompt "scriptargs.lua 1 20 Hello 300"
<OK
[COM1]Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio
Script Name: "scriptargs.lua"
Arg# Type String Number
1 string 1 1
2 string 20 20
3 string Hello nil
4 string 300 300
Sum of Number Arguments: 321
Number of 20s found: 0
>