The bash shell script can split a given string by space into a 1D array.
str="a b c d e"
# arr is a, arr is b, etc. arr is now an array, but what is the magic behind?
In an assignment, the parentheses simply indicate that an array is being created; this is independent of the use of parentheses as a compound command.
This isn't the recommended way to split a string, though. Suppose you have the string
str="a * b" arr=($str)
$str is expanded, the value undergoes both word-splitting (which is what allows the array to have multiple elements) and pathname expansion. Your array will now have
a as its first element,
b as its last element, but one or more elements in between, depending on how many files in the current working directly
* matches. A better solution is to use the
read -ar arr <<< "$str"
read command itself splits the value of
$str without also applying pathname expansion to the result.