我有以下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
谢谢。
未测试,但您可以尝试从代码中进行调整。
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[*]}"
不再是一个数组,但它只是一个字符串。所以,除非你试图创建csv格式或python数组,否则你所要求的有点奇怪。
不要否定-z
,只使用不带bang!
的-n
,例如
[ -n "$dns" ]
nameserver
被声明为和数组,但您正在分配变量nameserver+=
,数组需要( )
。