C-style functions

Inlined commands for expressions and statements

Description

The traditional way to spawn a sub-shell would be ${} (or $() in Bourne Shell and its many derivatives). This works great for inlining entire command lines but it isn’t so convenient if you want to call one command and particularly within an expression.

This is where C-style functions can be more ergonomic. They follow the common structure of command(parameters...). For example:

» out("hello world")

The syntax is not exactly like C and its derivatives however:

And unlike statements:

Ostensibly, C-style functions are just syntactic sugar for ${}. As such, they’re not intended to be used liberally but rather just in instances it improves readability.

Examples

Assignment In Expressions

As a C-style function (CSF) vs a sub-shell:

# CSF
» $doc = open(README.html)

# Sub-shell
» $doc = ${open README.html}

Numeric Value In Expressions

As a C-style function (CSF) vs a sub-shell:

# CSF
» datetime({py}%H) * 60
1260

# Sub-shell
» ${datetime {py}%H}} / 60
1260

Statement Inlining

As a C-style function (CSF) vs a sub-shell:

# CSF
» echo It is datetime({py}%H) o\' clock
It is 21 o' clock

# Sub-shell
» echo It is ${datetime {py}%H} o\' clock
It is 21 o' clock

Notice in the example above, echo’s parameters are not quoted. This is because C-style functions do not support infixing.

Detail

Valid Function Names

Please note that currently the only functions supported are ones who’s names are comprised entirely of alpha, numeric, underscore and/or exclamation marks.

String Infixing

C-style functions do not support being infixed like sub-shells can be:

# CSF
» echo "It is datetime({py}%H) o\' clock"
It is datetime({py}%H) o' clock

# Sub-shell
» echo "It is ${datetime {py}%H} o\' clock"
It is 21 o' clock

See Also


This document was generated from gen/parser/c-style-functions_doc.yaml.

This site's content is rebuilt automatically from murex's source code after each merge to the master branch. Downloadable murex binaries are also built with the website.

Last built on Sat Aug 23 22:28:13 UTC 2025 against commit ad23f13ad23f131bfecd82ea8a12d9b3e92aab5d8398ae9.

Current version is 7.0.2129 (website) which has been verified against tests cases.