yq/pkg/yqlib/doc/operators/system-operators.md
Mike Farah 5ea069a5ed
Update pkg/yqlib/doc/operators/system-operators.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-28 14:21:39 +11:00

1.7 KiB

System Operators

The system operator allows you to run an external command and use its output as a value in your expression.

Security warning: The system operator is disabled by default. You must explicitly pass --enable-system-operator to use it.

Usage

yq --enable-system-operator --null-input '.field = system("command"; "arg1")'

The operator takes:

  • A command string (required)
  • An argument or array of arguments separated by ; (optional)

The current matched node's value is serialised and piped to the command via stdin. The command's stdout (with trailing newline stripped) is returned as a string.

Disabling the system operator

The system operator is disabled by default. When disabled, a warning is logged and null is returned instead of running the command.

Use --enable-system-operator flag to enable it.

system operator returns null when disabled

Use --enable-system-operator to enable the system operator.

Given a sample.yml file of:

country: Australia

then

yq '.country = system("/usr/bin/echo"; "test")' sample.yml

will output

country: null

Run a command with an argument

Use --enable-system-operator to enable the system operator.

Given a sample.yml file of:

country: Australia

then

yq --enable-system-operator '.country = system("/usr/bin/echo"; "test")' sample.yml

will output

country: test

Run a command without arguments

Omit the semicolon and args to run the command with no extra arguments.

Given a sample.yml file of:

a: hello

then

yq --enable-system-operator '.a = system("/usr/bin/echo")' sample.yml

will output

a: ""