我正在使用bash脚本检查ftp站点以查看是否存在某些文件。它通过使用curl循环遍历文件数组来检查ftp服务器上是否存在该文件。如果它没有,那么curl应该输出一个错误,我在if循环中查找并基于它回显结果。代码如下:
#!/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
有关if循环失败的事情,我已经尝试了很多变种,但一直无法找到一个有效的。目前,结果永远不会与错误匹配。当我从命令行运行curl时,如果文件不存在,则输出我设置为$err
的错误但是在运行脚本时,每次都说文件确实存在时选择了else分支。我甚至尝试将错误设置为*"19"*
,但仍然不匹配。我花了很多时间查找并测试它,但没有运气,所以会感激任何帮助。
由于
答案 0 :(得分:2)
( )
会获得返回值$( )
会让你stdout
result=$(curl ftp://$ftpaddress$ftplocation$f --user $ftpusername:$ftppassword --head 2>&1)