我已成功製成的聯接函數,使用定界符它連接一個數組爲字符串:用含有元素空格對外輸出陣列
function join() # Usage: string=$(join "delimeter" "${array[@]}")
{
local array=("${@:2}")
OLD_IFS="$IFS"
IFS="$1"
local string="${array[*]}"
IFS="$OLD_IFS"
echo "$string"
}
我也試圖使分裂函數應該做相反的:
function split() # Usage: array=($(split "delimeter" "$string"))
{
OLD_IFS="$IFS"
IFS="$1"
local array=($2)
IFS="$OLD_IFS"
echo "${array[@]}"
}
但是,當我使用split命令並且結果包含空格時,它將無法按預期工作。 實施例:
array=("foo" "bar" "baz" "foo bar")
string=$(join "|" "${array[@]}")
echo $string
array=($(split "|" "$string"))
for i in ${array[@]}
do
echo $i
done
的最後一個元素爲 「foo欄」 已拆分過。 我認爲解決方案是你必須做array=("$(split '|' "$string")")
,但我不知道如何嵌套報價。