bash-hackers-wiki/docs/syntax/expansion/wordsplit.md
Hanson Char b75c3a588b Fix hyperlinks of markdown pages at depth 3
find docs/ -depth 3  -name '*.md' | xargs grep '(.*/' -l | \
  xargs -I{} \
  sed -i '' \
  -e 's%(/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)\(.md\)\{0\})%(../../\1/\2.md)%g' \
  -e 's%(/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)#\([a-zA-Z_-][0-9a-zA-Z_-]*\))%(../../\1/\2.md#\3)%g' \
  -e 's%(/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)\(.md\)\{0\})%(../../\1/\2/\3.md)%g' \
  -e 's%(/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)/\([^/#).][^/#).]*\)#\([a-zA-Z_-][0-9a-zA-Z_-]*\))%(../../\1/\2/\3.md#\4)%g' \
  -e 's%](\([^:.>)#][^:.>)#]*\))%](../../\1.md)%g' \
  -e 's%](\([^:.>)#][^:.>)#]*\)#\([^:.>)#][^:.>)#]*\))%](../../\1.md#\2)%g' \
  {}

Related to https://github.com/flokoe/bash-hackers-wiki/issues/10
2024-01-28 17:26:57 -08:00

1.7 KiB

Word splitting

FIXME to be continued!

Word splitting occurs once any of the following expansions are done (and only then!)

Bash will scan the results of these expansions for special IFS characters that mark word boundaries. This is only done on results that are not double-quoted!

Internal Field Separator IFS

The IFS variable holds the characters that Bash sees as word boundaries in this step. The default contains the characters

  • <space>
  • <tab>
  • <newline>

These characters are also assumed when IFS is unset. When IFS is empty (nullstring), no word splitting is performed at all.

Behaviour

The results of the expansions mentioned above are scanned for IFS-characters. If one or more (in a sequence) of them is found, the expansion result is split at these positions into multiple words.

This doesn't happen when the expansion results were double-quoted.

When a null-string (e.g., something that before expanded to >>nothing<<) is found, it is removed, unless it is quoted ('' or "").

[Again note:]{.underline} Without any expansion beforehand, Bash won't perform word splitting! In this case, the initial token parsing is solely responsible.

See also