假设工作目录中有两个文件:
test201612290900.txt
test201612290901.txt当我跑的时候
ftp -n $HOST <<SCRIPT
user $USER $PASSWORD
put test*.txt test.txt
bye
SCRIPT使用ftp可执行文件(linux),只有一个文件被放到ftp站点。
编辑:我使用这个*,因为我现在没有预先准确的文件名。
我发现复制到ftp站点的总是第一个匹配(test201612290900.txt)。
我的问题:这是记录在案的行为吗?我能控制这种行为吗?
发布于 2016-12-29 08:58:50
put命令只上传一个文件。
put命令中的模式实际上是在执行ftp之前就由shell解析的(类似于环境变量(如$HOST) )。
这可能会回答你的问题:
match files in alphanumeric order?
不过请注意,语法put a b c是错误的。更令人惊讶的是,它没有出错。所以你不能指望它会被记录下来。
你最好这样做:
FILES=(test*.txt)
FILE=${FILES[0]}
ftp -n $HOST <<SCRIPT
user $USER $PASSWORD
put $FILE test.txt
bye
SCRIPT发布于 2016-12-29 09:00:08
您使用的是不引用的此处文档。这意味着您的shell将在ftp运行之前展开通配符并在shell文档中插入变量。
所以在实践中,你要
put test201612290900.txt test201612290901.txt test.txt引用这里的文档可以解决这个问题,但是当然,这不会使您的程序工作,因为FTP put命令不支持通配符。正如Ipor Sircer的答案所示,mput命令是这样做的;但是,您也需要正确引用这里的文档。
发布于 2016-12-29 08:54:59
观看手册的ftp是免费今天!
mput local-files
Expand wild cards in the list of local files given as argu‐
ments and do a put for each file in the resulting list. See
glob for details of filename expansion. Resulting file names
will then be processed according to ntrans and nmap settings.https://stackoverflow.com/questions/41376091
复制相似问题