51 lines
688 B
Markdown
51 lines
688 B
Markdown
![]() |
---
|
||
|
categories:
|
||
|
- Programming Languages
|
||
|
tags:
|
||
|
- shell
|
||
|
---
|
||
|
|
||
|
# Splitting input into an array
|
||
|
|
||
|
## `readarray`
|
||
|
|
||
|
`readarray` makes it really easy to split input into an array.
|
||
|
|
||
|
Say we have this file as input:
|
||
|
|
||
|
```
|
||
|
123
|
||
|
456
|
||
|
789
|
||
|
```
|
||
|
|
||
|
Then we can split like so:
|
||
|
|
||
|
```bash
|
||
|
readarray -t name_for_array < ./input.text
|
||
|
|
||
|
# Print all elements
|
||
|
echo "${name_for_array[@]}"
|
||
|
|
||
|
# Print element by index
|
||
|
|
||
|
echo "${name_for_array[1]}"
|
||
|
456
|
||
|
```
|
||
|
|
||
|
If we want to read direct from string within bash file:
|
||
|
|
||
|
```bash
|
||
|
readarray -t new_name_for_array <<< "here
|
||
|
is
|
||
|
some
|
||
|
text"
|
||
|
|
||
|
echo "${new_name_for_array[1]}"
|
||
|
is
|
||
|
```
|
||
|
|
||
|
> The _-t_ flag removes the trailing newline
|
||
|
|
||
|
Add more: https://linuxhint.com/split-string-array-bash/
|