Как разбить строку по разделителю в Bash?

Взято из Bash shell script split array:

IN="bla@some.com;john@home.com"
arrIN=(${IN//;/ })
echo ${arrIN[1]}                  # Output: john@home.com

Пояснение:

Эта конструкция shell-command заменяет все вхождения ';' (начальное shell-command // означает глобальную замену) в split строке IN на ' ' (одиночный пробел), затем shell-scripting интерпретирует строку с разделителями-пробелами bashrc как массив (это что делают splitting окружающие круглые скобки).

Синтаксис, используемый bash внутри фигурных скобок для bash замены каждого символа ';' на scripts символ ' ', называется Parameter Expansion.

Есть bash несколько распространенных string-split ошибок:

  1. Если в исходной строке есть пробелы, вам нужно будет использовать IFS:
  • IFS=':'; arrIN=($IN); unset IFS;
  1. Если в исходной строке есть пробелы и разделителем является новая строка, вы можете установить IFS с помощью:
  • IFS=$'\n'; arrIN=($IN); unset IFS;

bash

shell

split

scripting

2022-11-16T07:04:35+00:00