将空格分隔的字符串转换为以bash分隔的逗号

时间:2018-11-10 15:21:21

标签: bash shell

我是Shell脚本的新手

我正在缩进转换字符串,例如:

abc def ghi

"abc","def","ghi"

这是我尝试过的:

testvar= "abc def ghi"

a='"';

res="";
coma=","
for i in $testvar
do
vals=(${i//__/ })
 if [ -z "$res" ]; then
    $res= $res$a$vals$a
 else 
 $res=$res$coma$a$vals$a
 fi
done

echo $res

出现此错误:

$bash -f main.sh

main.sh: line 4: abc def ghi: command not found

我在做什么错? 有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

通过创建数组并使用IFS的替代方法。遍历每个值并在其周围添加双qoutes。

array=($testvar)

declare item
for idx in "${!array[@]}"; do
    item="${array[$idx]}"
    array[$idx]=\""${item}"\"    # Add double qoute
done

(IFS=, ; echo "${array[*]}")   # prevents IFS from changing.

答案 1 :(得分:0)

也许您可以使用sed命令,如下所示: (请注意,defghi中有多个空格)

$ echo 'abc def   ghi' | sed -E 's/\s+/\,/g'
abc,def,ghi