我要打印用逗号分隔的数组中的所有字符串
#! /bin/bash
clear
echo -e "Enter the list of hosts to print statement:\n"
readarray hosts
echo "======================================================="
echo -e "Enter the list to print"
echo "======================================================="
for i in ${hosts[@]}
do
id="${i[@]}";echo [ ${i// /, } ]
echo $id
done
如果这些输入
afrid.google.com
farid.google.com
我的预期结果是
[ "afrid.google.com", "farid.google.com" ]
但是我的结果是
[ farid.google.com ]
farid.google.com
[ farid.google.com ]
farid.google.com
答案 0 :(得分:2)
似乎您正在尝试生成json数组。如果是这样,请放弃for循环并使用jq。
$ jq -Rc './" "' <<< ${hosts[@]}
["afrid.google.com","farid.google.com"]
答案 1 :(得分:0)
一个非jq答案,基本上是通过printf命令提供数组,并包含我们的格式(例如引号和逗号,然后在下一个命令中从字符串中删除最后一个字符):
hosts_str=$( printf '"%s", ' "${hosts[@]}" )
hosts_str="[ ${hosts_str: : -2} ]"
echo $hosts_str