我有以下bash脚本:
declare -a nameserver=()
for ((n=1; n<=5; n++))
do
read -p 'Enter DNS'$n' ? : ' dns
if [ ! -z "$dns" ]
then
nameserver+=$dns
else
break
fi
done
echo ${nameserver}输出显示dns1dns2dns2
如何用逗号分隔值回波数组?例子: dns1,dns2,dns3
谢谢。
发布于 2022-09-07 10:56:29
未经测试,但您可以尝试从您的代码调整。
declare -a nameserver=()
for ((n=1; n<=5; n++))
do
read -p 'Enter DNS'$n' ? : ' dns
if [ ! -z "$dns" ]
then
nameserver+=("$dns")
else
break
fi
done
(IFS=,;printf '%s' "${nameserver[*]}")用逗号分隔的空格。
printf -v output '%s' "${nameserver[*]/%/,}"删除后面的逗号。
echo "${output%,*}"虽然从技术上讲,与"${nameserver[*]}"相同的"${nameserver[*]}"不再是一个数组,但它只是一个字符串。所以,除非您试图创建csv格式或python数组,否则您所要求的是有点奇怪。
与其否定-z,不如直接使用-n而不使用!。
[ -n "$dns" ]nameserver被声明为和数组,但是您要为变量nameserver+=分配数组,数组需要一个( )。
https://stackoverflow.com/questions/73634225
复制相似问题