yq/operators/alternative-default-value.md

109 lines
1.3 KiB
Markdown
Raw Normal View History

2021-10-30 03:14:39 +00:00
# Alternative (Default value)
This operator is used to provide alternative (or default) values when a particular expression is either null or false.
## LHS is defined
Given a sample.yml file of:
```yaml
a: bridge
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.a // "hello"' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
bridge
```
## LHS is not defined
Given a sample.yml file of:
```yaml
{}
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.a // "hello"' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
hello
```
## LHS is null
Given a sample.yml file of:
```yaml
a: ~
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.a // "hello"' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
hello
```
## LHS is false
Given a sample.yml file of:
```yaml
a: false
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.a // "hello"' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
hello
```
## RHS is an expression
Given a sample.yml file of:
```yaml
a: false
b: cat
```
then
```bash
2022-01-28 01:45:43 +00:00
yq '.a // .b' sample.yml
2021-10-30 03:14:39 +00:00
```
will output
```yaml
cat
```
2021-10-30 03:40:51 +00:00
2022-09-09 01:23:34 +00:00
## Update or create - entity exists
This initialises `a` if it's not present
Given a sample.yml file of:
```yaml
a: 1
```
then
```bash
yq '(.a // (.a = 0)) += 1' sample.yml
```
will output
```yaml
a: 2
```
## Update or create - entity does not exist
This initialises `a` if it's not present
Given a sample.yml file of:
```yaml
b: camel
```
then
```bash
yq '(.a // (.a = 0)) += 1' sample.yml
```
will output
```yaml
b: camel
a: 1
```