0
我正在使用bash脚本来检查ftp站点以查看是否存在一些文件。它通过使用curl遍历一系列文件来检查文件是否存在于ftp服务器上。如果它没有,然后curl应该输出一个错误,即时通讯在我的if循环寻找并回应基于它的结果。下面的代码:bash如果声明失败
#!/bin/bash
# script variables
ftpaddress=ftpaddress
ftplocation=folderlocation
ftpusername=ftpusername
ftppassword=ftppassword
err="curl: (19) Given file does not exist"
# Initialise array of files
files=("file1.xml" "file2.xml" "zy.xml")
for f in "${files[@]}"; do
result=(curl ftp://$ftpaddress$ftplocation$f --user $ftpusername:$ftppassword --head)
if [[ "$result" == "$err" ]]; then
echo $f " Does not exist!!!!"
else
echo $f "Exists"
fi
done
讲讲如果循环失败,香港专业教育学院尝试了很多关于它的变化,但一直无法找到一个工作。目前结果永远不匹配错误。当我从命令行运行curl时,如果文件不存在,但是运行脚本时会输出我设置为$err
的错误,但每次都选择else分支表示文件确实存在。我甚至尝试将错误设置为*"19"*
,但它仍然不匹配。我花了很多时间查找并测试它,但没有运气,所以不会感激任何帮助。
感谢
严重,而不是使用卷曲的wget,wget的返回一个错误状态($?),如果它失败。 – Jasen
你的echo语句应该在引号内有$ f,以防万一文件名以'-e'或'-n'等开头......一般在引号之外的任何地方使用“$”就是一个shell的邀请注射攻击。 – Jasen
@Jasen行情不会自动帮助争论。 'echo“-n”foo“仍将'-n'作为参数。如果变量是'-n something',但通过避免分词,它确实有帮助。 –