我想从我的数组中用逗号分隔字符串。在我的脚本中,我收集数据到数组outputArr
,然后我想echo
它来检查它,但现在我卡住了。我想使用以下方法在控制台上打印:
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 :(得分:4)
您的数组包含带回车符的元素:
$ foo=($'\rterminally yours' $'\r2204')
$ echo "${foo[0]}"
terminally yours
$ echo "${foo[1]}"
2204
$ echo "${foo[*]}"
2204inally yours
对于您的代码,您可以添加以下内容以从变量中删除回车符:
singleLine=${singleLine//$'\r'/}
答案 1 :(得分:2)
要从每个数组元素中删除任何尾随回车符,请尝试
outputArray=( "${outputArray[@]%$'\r'}" )
但是,最好先检查outputArray
的设置方式,并防止首先添加回车符。如果您正在读取使用DOS行结尾的文件,请首先使用dos2unix
“清除”它。