Bash。创建以逗号分隔的数组。

21 浏览
0 Comments

Bash。创建以逗号分隔的数组。

我有以下的bash脚本:

declare -a nameserver=()
for ((n=1; n<=5; n++))
do
        read -p '请输入DNS'$n':' dns
        if [ ! -z "$dns" ]
        then
                nameserver+=$dns
        else
                break
        fi
done
echo ${nameserver}

输出显示为dns1dns2dns2

如何以逗号分隔的值来显示数组?例如:dns1,dns2,dns3

谢谢。

0
0 Comments

问题的出现原因:代码中使用的数组nameserver没有以逗号分隔的形式输出。

解决方法:

1. 将数组nameserver以逗号分隔的形式输出:

(IFS=,;printf '%s' "${nameserver[*]}")

2. 将以空格分隔的数组nameserver转换为以逗号分隔的形式输出:

printf -v output '%s' "${nameserver[*]/%/,}"

3. 去除输出结果末尾的逗号:

echo "${output%,*}"

4. 如果目的是创建csv格式或python数组,可以使用$*或"${nameserver[*]}"来代替数组。

5. 将条件判断中的[ ! -z "$dns" ]改为[ -n "$dns"]。

0