Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

2
  • This seems to be the officially recommended way for working with delimiters in bash, using read -r is perfect as splitting the outputs into separate variables is preferable for my actual use case. I liked all 3 answers so far, this is the one i'm going to actually end up using because it can be done conveniently in one line, and I can use parameter expansions in conjunction with this to ensure it's all lowercase which I happen to also need. But I will be marking Stéphane Chazelas's answer as the solution since he answers the question (when taken most literally) best.
    – Cestarian
    Commented2 days ago
  • 3
    IFS=: read -ra array <<< "$string" only works for strings that don't contain newline characters (and in some versions of bash are valid text in the user's locale) and discards an empty trailing element. For arbitrary strings, you need more something like IFS=: LC_ALL=C read -rd '' -a array < <(printf '%s:\0' "$string" as detailed in my answer.Commented2 days ago

close