使用bash脚本以逗号分隔打印数组中的所有字符串

时间:2019-04-15 18:36:55

标签: bash

我要打印用逗号分隔的数组中的所有字符串

#! /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

2 个答案:

答案 0 :(得分:2)

似乎您正在尝试生成json数组。如果是这样,请放弃for循环并使用

$ 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