2014-01-20 79 views
3

我想从我的数组中做逗号分隔的字符串。在我的脚本中,我收集数据到数组outputArr,然后我想echo它检查出来,但现在我卡住了。我想用打印出来的控制台:bash脚本数组到csv

echo ${outputArr[*]}

,但我发现错了输出。所以我想调试它,并把它写这样的:这里

echo ${outputArr[0]} 
echo ${outputArr[1]} 
echo ${outputArr[*]} 
echo "-------------" 

确定是我的输出:

Terminally Yours 
2204 
2204nally Yours 
------------- 

和其他例如:

Alfa 
1491 
1491 
------------- 

这是为什么呢改写空间在一开始?当然,我的目标是(最终):

Alfa;1491 

在这一点上:

Alfa1491 

编辑:

while read -r line 
do 
    singleLine=$line 
    if [[ $singleLine =~ $regexVenueName ]] 
    then 
     singleLine=${singleLine/<span id=\"ctl00_MainContent_lbPartner\" class=\"Partner\">/} 
     singleLine=${singleLine/<\/span> <br \/><br \/>/} 
     partnerVenueNameOutput+="$singleLine" 
     outputArr[0]=$singleLine 
    fi 
done < "$f" 
+0

你试过引用你的变量吗? 'echo'$ {outputArr [0]}“' – fedorqui

+1

您的数组元素以回车符结束,可能是因为您从具有DOS行尾的文件读取或从使用回车符的命令捕获输出。 – chepner

+0

@fedorqui - 是的,没有工作。 – Kuba

回答

4

你的数组包含回车元素:

$ foo=($'\rterminally yours' $'\r2204') 
$ echo "${foo[0]}" 
terminally yours 
$ echo "${foo[1]}" 
2204 
$ echo "${foo[*]}" 
2204inally yours 

为您的代码,你可以添加以下删除从变量回车:

singleLine=${singleLine//$'\r'/} 
+0

有可能。我如何删除它?我从wget下载的html文件中逐行读取我的文件。我更新我的答案,添加一些代码。 – Kuba

+0

@Kuba检查上面的更新。 – devnull

+0

非常好,谢谢! – Kuba

2

要从每个数组元素任何尾随回车,尝试

outputArray=("${outputArray[@]%$'\r'}") 

但是,它可能会更好地检查如何设置outputArray并防止首先添加回车。如果您正在使用DOS行结尾的文件进行读取,请尝试使用dos2unix首先“清理”它。