#!/usr/bin/env luna -- Showcase os.args(): the command-line arguments passed to the script. -- -- Try: -- luna lua/demo/args.lua greet --name=World extra -- luna --sandbox lua/demo/args.lua -- greet --name=World -- or make the file executable and call it directly (the shebang works too): -- chmod +x lua/demo/args.lua -- ./lua/demo/args.lua greet --name=World local args = os.args() print("os.args() = " .. utils.dump(args)) if #args == 0 then print("no arguments given — try: luna lua/demo/args.lua greet --name=World extra") return end -- A tiny argument parser: --key=value pairs become options, the rest positionals. local opts, positional = {}, {} for _, arg in ipairs(args) do local key, value = arg:match("^%-%-([%w-]+)=(.*)$") if key then opts[key] = value else table.insert(positional, arg) end end print("options = " .. utils.dump(opts)) print("positionals = " .. utils.dump(positional)) if positional[1] == "greet" then print(("Hello, %s!"):format(opts.name or "stranger")) end