bash如果语句失败

时间:2014-12-27 23:16:27

标签: bash if-statement curl ftp

我正在使用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"*,但仍然不匹配。我花了很多时间查找并测试它,但没有运气,所以会感激任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

( )会获得返回值$( )会让你stdout

 result=$(curl ftp://$ftpaddress$ftplocation$f --user $ftpusername:$ftppassword --head 2>&1)