# Script Arguments

Arguments can be passed to Lune scripts directly from the command line when running them:

```sh copy filename="Bash"
lune run script-name arg1 arg2 "argument three"
```

These arguments will then be available in your script using the
[process](../../api-reference/process.md) built-in library, more specifically in
[`process.args`](../../api-reference/process.md#args):

```lua copy
local process = require("@lune/process")

print(process.args)
--> { "arg1", "arg2", "argument three" }
```

---

Arguments in [`process.args`](../../api-reference/process.md#args) will always be a table that is a
contiguous array, and are guaranteed to not change during runtime. A useful pattern here could be to
check for arguments given, and if there are none, prompt the user for input:

```lua copy
local process = require("@lune/process")
local stdio = require("@lune/stdio")

if #process.args > 3 then
	error("Too many arguments!")
elseif #process.args > 0 then
	print("Got arguments:")
	print(process.args)
else
	print("Got no arguments ☹️")
	local prompted = stdio.prompt("Please enter some text:")
	print("Got prompted text:", prompted)
end
```