Разбить строку на новую строку и записать ее в массив с помощью чтения

Лучше всего просто установить CentOS 7 на другой USB-накопитель, установить то, что вам нужно, а затем загрузиться с него.

1
10.01.2021, 23:42
1 ответ

read возвращает 1, потому что разделитель не виден в строке. Однако массив заполнен:

$ echo "$BASH_VERSION"
3.2.57(1)-release
$ foo=$'one\ntwo\nthree\nfour'

$ IFS=$'\n' read -d '' -r -a bar <<<"$foo"
$ echo $?
1
$ declare -p bar
declare -a bar='([0]="one" [1]="two" [2]="three" [3]="four")'

Использование не-нулевого разделителя дает не-нулевой результат:

$ unset bar
$ IFS=$'\n' read -d "\034" -r -a bar <<<"${foo}\034"
$ echo $?
0
$ declare -p bar
declare -a bar='([0]="one" [1]="two" [2]="three" [3]="four")'

Octal 34 является символом "разделителя файлов" ASCII, маловероятно его присутствие в ваших данных.

2
18.03.2021, 22:37

Теги

Похожие вопросы