我是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
我在做什么错? 有更好的方法吗?
答案 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
命令,如下所示:
(请注意,def
和ghi
中有多个空格)
$ echo 'abc def ghi' | sed -E 's/\s+/\,/g'
abc,def,ghi