【发布时间】:2021-11-19 00:28:30
【问题描述】:
添加逗号会创建一个空格而不是附加逗号。
注意:$1 的值为s,v,h
declare -A handles
handles["s"]="test1"
handles["v"]="test2"
handles["h"]="test3"
IFS=',' list=($1)
for item in "${list[@]}"; do
result+=",${handles["$item"]}"
done
echo -e $result
输出:test1 test2 test3
预期:test1,test2,test3
【问题讨论】:
-
@markp-fuso
$1的值为s,v,h -
IFS=',' list=($1)未在其环境中设置 IFS 执行list分配。相反,它相当于IFS=','; list=($1);,因此充当两个分配。我认为核心问题是 echo 中缺少引号,应该是echo -e "$result",但是将 IFS 重置为合理的值当然是个好主意。