我的这个CSV有2列:一列包含名称,另一个文件名没有扩展名。
当我解析它并将值存储在2个数组中时,我想在文件名中添加路径和PDF扩展名,但是当我这样做时,我会得到这样的结果:
Giacomos-MBP:test Jack$ ./test.sh -p e.csv -a 2017
.pdf://www.test.com/2017/03cr14a076d
.pdf://www.test.com/2017/03bg15a365d
.pdf://www.test.com/2017/03bs15a451d
.pdf://www.test.com/2017/03bg15a440d
.pdf://www.test.com/2017/03cr16a570d
.pdf://www.test.com/2017/03bg15a794d
我希望
http://www.test.com/2017/03bg15a794d.pdf
代替
有人知道为什么吗?看起来扩展程序位于路径前面
这是我的剧本
#!/bin/bash
while getopts p:a: arg
do
case $arg in
p) multi=$OPTARG
;;
a) anno=$OPTARG
;;
esac
done
declare -a citta
declare -a codice
i=0
while IFS=";" read col1 col2 do
citta[$i]=$col1;
codice[$i]=$col2;
((i++))
done < $multi
cartella='http://www.test.com/'$anno'/'
total=${#citta[*]}
for (( i=0; i<=$(( $total -1 )); i++ )) do
last="${codice[$i]}.pdf"
echo $cartella$last
done
正如@FredrikPihl建议这是我得到的输出
Giacomos-MBP:test Jack$ ./test.sh -p e.csv -a 2017
+ getopts p:a: arg
+ case $arg in
+ multi=e.csv
+ getopts p:a: arg
+ case $arg in
+ anno=2017
+ getopts p:a: arg
+ declare -a citta
+ declare -a codice
+ i=0
+ IFS=';'
+ read col1 col2
+ citta[$i]=Agnadello
+ codice[$i]=$'03cr14a076d\r'
+ (( i++ ))
+ IFS=';'
+ read col1 col2
+ citta[$i]=Arcene
+ codice[$i]=$'03bg15a365d\r'
+ (( i++ ))
+ IFS=';'
+ read col1 col2
+ citta[$i]=Artogne
+ codice[$i]=$'03bs15a451d\r'
+ (( i++ ))
+ IFS=';'
+ read col1 col2
+ citta[$i]=$'\r'
+ codice[$i]=
+ (( i++ ))
+ IFS=';'
+ read col1 col2
+ total=4
+ cartella=http://www.test.com/2017/
+ (( i=0 ))
+ (( i<=3 ))
+ last=$'03cr14a076d\r.pdf'
+ echo $'http://www.test.com/2017/03cr14a076d\r.pdf'
.pdf://www.test.com/2017/03cr14a076d
+ (( i++ ))
+ (( i<=3 ))
+ last=$'03bg15a365d\r.pdf'
+ echo $'http://www.test.com/2017/03bg15a365d\r.pdf'
.pdf://www.test.com/2017/03bg15a365d
+ (( i++ ))
+ (( i<=3 ))
+ last=$'03bs15a451d\r.pdf'
+ echo $'http://www.test.com/2017/03bs15a451d\r.pdf'
.pdf://www.test.com/2017/03bs15a451d
+ (( i++ ))
+ (( i<=3 ))
Giacomos-MBP:test Jack$