Bash: разделить многострочный ввод на массив

Вы не должны были делать mkdir .config ; вам нужно было просто скопировать существующий файл конфигурации в имя файла с именем .config в исходном каталоге ядра.

например.

cd linux-yocto-3.14
cp /path/to/config-3.14.26-yocto-qemu .config
make -j4 all
3
14.02.2018, 14:30
2 ответа

Ваша попытка близка к фактическому решению. Соответствующий флаг можно найти в справке read:

.
$ help read
...
      -d delim  continue until the first character of DELIM is read, rather
            than newline

Это не упоминается явно, но вы можете установить разделитель пустым, и, таким образом, он будет читаться до EOF.

$ IFS=, read -d '' -a myarray < myfile

$ echo ${myarray[2]}
U2FsdGVkX1/c8rTTO41zVT7gB+KL+n7KoNCgM3vfchOyuvBngdXDGjXTvXTK0jz6
5
27.01.2020, 21:22

Используйте -d ''для чтения всего файла вместо одной строки.

 -d delim   continue until the first character of DELIM is read, rather
            than newline
$ cat file.txt 
abcd
efgh
$ IFS=$'\n' read -a ARR < file.txt
$ echo ${#ARR[@]}
1 # only 1 element
$ IFS=$'\n' read -a ARR -d '' < file.txt
$ echo ${#ARR[@]}
2 # whole file

И еще:
Убедитесь, что в вашем скрипте нет set -e, если вы используете -d '', так как read --helpговорит (в конце ):

.
 Exit Status:   
    The return code is zero, **unless end-of-file is encountered**...
$ IFS=$'\n' read -a ARR < file.txt
$ echo $?
0
$ IFS=$'\n' read -a ARR -d '' < file.txt
$ echo $?
1 # Your script will exit if you `set -e`
1
23.06.2020, 06:07

Теги

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