How to add a string that contains whitespace to array in shell script All In One
I have tried some ways to add a
string
which containwhitespace
to array inshell script
, but failed.
string variables concatenate
#!/usr/bin/env bash
str1="hello"
str2="world"
# ✅
strs="$str1 $str2"
# or ✅
# strs+="$str1 "
# strs+="$str2"
# or ✅
# strs="$str1 ""$str2"
echo $strs
# hello world
error
But that not work when I add a string which contain a whitespace
to array.
It splits the string into two items.
#!/usr/bin/env bash
str1="hello"
str2="world"
# ❌
# strs="$str1\ $str2"
# strs="$str1'\ '$str2"
strs="$str1 $str2"
arr=()
arr+=("$strs")
for item in ${arr[@]}; do
echo "item = $item"
done
# item = hello
# item = world
tried
After I remove the whitespace, use other symbol
it works, but not the expected result.
#!/usr/bin/env bash
str1="hello"
str2="world"
# ❓
# strs="$str1"-"$str2"
strs="$str1"_"$str2"
arr=()
arr+=("$strs")
for item in ${arr[@]}; do
echo "item = $item"
done
# item = hello_world
So, what's wrong with that, and how to fix it.
solution ✅
I want to get only one item with whitespace.
#!/usr/bin/env bash
str1="hello"
str2="world"
# ❓
strs="string with whitespace"
arr=()
arr+=("$strs")
# ✅ 双引号
for item in "${arr[@]};" do
echo "item = $item"
done
# item = hello world