string-join0 - join strings with zero bytes¶
Synopsis¶
string join [-q | --quiet] [-n | --no-empty] [--] SEP [STRING ...]
string join0 [-q | --quiet] [-n | --no-empty] [--] [STRING ...]
Description¶
Joins its STRING arguments into a single string separated by SEP (for string join
) or by the
zero byte (NUL) (for string join0
).
Exit status: 0 if at least one join was performed, or 1 otherwise.
- -n, --no-empty
Exclude empty strings from consideration (e.g.
string join -n + a b "" c
would expand toa+b+c
nota+b++c
).- -q, --quiet
Do not print the strings, only set the exit status as described above.
WARNING:
Insert a --
before positional arguments to prevent them from being interpreted as flags.
Otherwise, any strings starting with -
will be treated as flag arguments, meaning they will most likely result in the command failing.
This is also true if you specify a variable which expands to such a string instead of a literal string.
If you don’t need to append flag arguments at the end of the command,
just always use --
to avoid unwelcome surprises.
string join0
adds a trailing NUL. This is most useful in conjunction with tools that accept NUL-delimited input, such as sort -z
.
Because Unix uses NUL as the string terminator, passing the output of string join0
as an argument to a command (via a command substitution) won’t actually work.
Fish will pass the correct bytes along, but the command won’t be able to tell where the argument ends.
This is a limitation of Unix’ argument passing.
Examples¶
>_ seq 3 | string join ...
1...2...3
# Give a list of NUL-separated filenames to du (this is a GNU extension)
>_ string join0 file1 file2 file\nwith\nmultiple\nlines | du --files0-from=-
# Just put the strings together without a separator
>_ string join '' a b c
abc
>_ set -l markdown_list '- first' '- second' '- third'
# Strings with leading hyphens (also in variable expansions) are interpreted as flag arguments by default.
>_ string join \n $markdown_list
string join: - first: unknown option
# Use '--' to prevent this.
>_ string join -- \n $markdown_list
- first
- second
- third