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

>