Blog

CommandBox - Mastering Parameters

Brad Wood March 06, 2015

Spread the word

Brad Wood

March 06, 2015

Spread the word


Share your thoughts

CommandBox is unique from other CLIs in a couple ways.  My favorite one is that everything is built around the concept of commands.  Not only does this organize how CFML scripts can be run from the command line, it also greatly simplifies writing custom commands since you have a platform to build upon.  Part of that platform is automatic parameter handling, which brings me to my second favorite thing about CommandBox.  Many CLIs only allow for positional parameters, while CommandBox also allows for the familiar syntax of named parameters plus the convenience of flags for quick boolean controls.

Named

coldbox create app name=myApp skeleton=AdvancedScript directory=myDir init=true

Positional

coldbox create app myApp AdvancedScript myDir true

Flags

coldbox create app myApp --init --installColdBox

Here's some cool tricks to mastering the command line like a pro with CommandBox.

Escaping Special Characters

If a value is a single word with no special characters, you don't need to escape anything. Certain characters are reserved as special characters though for parameters since they demarcate the beginning and end of the actual parameter and you'll need to escape them properly. These rules apply the same to named and positional parameters.

Spaces

If a parameter has any white space in it, you'll need to wrap the value in single or double quotes. It doesn't matter which kind you use and it can vary from one parameter to another as long as they match properly.

echo 'Hello World'
echo "Good Morning Vietnam"


Quotes

Quotes are actually allowed unescaped in a value like so:

echo O'reilly


However, if the parameter contains whitespace and is surrounded by quotes, you'll need to escape them with a backslash.

echo 'O\'reilly Auto Parts'
echo "Luis \"The Dev\" Majano"


Only like quotes need to be escaped. Single quotes can exist inside of double and vice versa without issue. These examples below are perfectly valid.

echo "O'reilly Auto Parts"
echo 'Luis "The Dev" Majano'


Equals Signs

If you have an equals sign in your value, you'll need to escape it with a backlash.

echo 2+2\=4


Line Breaks

A new line can be specified with the text \n. Keep in mind, some parameters might not expect new lines to exist and could error.

package set description="first line\nSecond Line\nThird Line"


Backslash

Since the backslash is used as our escape character you'll need to escape any legitimate backslash that happens to precede a single quote, double quote, equals sign, or letter n.

echo foo\\\=bar
This will print foo\=bar

File Paths

Many Commands accept a path to a folder or file on your hard drive. You can specify a fully qualified path that starts at your drive root, or a relative path that starts in your current working directory. To find your current working directory, use the pwd command (Print Working Directory). To change your current working directory, use the cd command.

Here is a fully qualified path in Windows and Unix-based:

mkdir C:\sites\test
mkdir \opt\var\sites\test


For a relative path, do not begin with a slash.

mkdir test


File system paths will be canonicalized automatically which means the following is also valid:

mkdir ../../sites/test

 

Add Your Comment

Recent Entries

12 Days of BoxLang - Day 4: TestBox

12 Days of BoxLang - Day 4: TestBox

Today we’re celebrating one of the most exciting new additions to the BoxLang ecosystem:

the TestBox BoxLang CLI Runner — a fast, native way to run your TestBox tests directly through the BoxLang Runtime. ⚡

No server required. No CommandBox needed. Just pure, ultra-fast BoxLang-powered testing from the command lineon Windows, Mac, and Linux.

If you’re building modern applications with BoxLang — web apps, CLIs, serverless functions, Android apps, or OS-level utilities — this new feature gives you a unified, flexible testing workflow you can run anywhere.

Victor Campos
Victor Campos
December 13, 2025
12 days of BoxLang - Day 3: SocketBox!

12 days of BoxLang - Day 3: SocketBox!

As BoxLang continues evolving into a modern, high-performance, JVM-based runtime, real-time communication becomes essential for the applications we all want to build: dashboards, collaboration tools, notifications, live feeds, multiplayer features, and more.

That’s where SocketBox steps in — the WebSocket upgrade listener built to work seamlessly with CommandBox and the BoxLang MiniServer. ⚡

Today, for Day 3, we’re highlighting how SocketBox supercharges BoxLang development by giving you fast, flexible, and framework-agnostic WebSocket capabilities.

Maria Jose Herrera
Maria Jose Herrera
December 12, 2025
12 Days of BoxLang - Day 2: CommandBox

12 Days of BoxLang - Day 2: CommandBox

BoxLang + CommandBox: The Enterprise Engine Behind Your Deployments

For Day 2 of our 12 Days of Christmas series, we’re diving into one of the most powerful parts of the BoxLang ecosystem: CommandBox the defacto enterprise servlet deployment platform for BoxLang.

If BoxLang is the language powering your applications, CommandBox is the engine room behind it all. ⚙️

Victor Campos
Victor Campos
December 11, 2025