我已经编写了一个脚本来ftp我的目录中的一组文件,但是我在尝试循环遍历数组时遇到错误。
#!/usr/bin/ksh
HOST='xxx.xxx.xxx.xxx'
USER='avio'
PASSWD='jun'
FILES[0]=D141203.T024413
FILES[1]=D150101.T012755
FILES[2]=D141203.T024418
echo 'no of files: ' ${#FILES[@]}
ftp -n -v $HOST << EOS
ascii
user $USER $PASSWD
for i in "${FILES[@]}"
do
get $i
done
bye
EOS
这是我的o / p:
no of files: 3
ftp.sh[10]: i: 0403-009 The specified number is not valid for this command.
答案 0 :(得分:4)
for
循环不作为bash
命令执行;相反,它作为字符串传递给ftp
命令。而是使用管道将命令的输出提供给ftp
:
#!/usr/bin/ksh
HOST='xxx.xxx.xxx.xxx'
USER='avio'
PASSWD='jun'
FILES[0]=D141203.T024413
FILES[1]=D150101.T012755
FILES[2]=D141203.T024418
echo 'no of files: ' ${#FILES[@]}
{ echo "ascii"
echo "user $USER $PASSWD"
for i in "${FILES[@]}"; do
echo "get $i"
done
echo "bye"
} | ftp -n -v $HOST