Linux If语句未正确标识回购文件是否存在

Linux If语句未正确标识回购文件是否存在,linux,bash,if-statement,yum,Linux,Bash,If Statement,Yum,我有一条if语句,它在/etc/yum.repos.d/中查找是否存在回购文件:我的代码如下: OptoolsRepo='rhel-7-server-7.0-rpms' if [ -e /etc/yum.repos.d/$OptoolsRepo ] then echo " " echo "Your Repo For OpenStack OpTools already exists." else

我有一条if语句,它在
/etc/yum.repos.d/
中查找是否存在回购文件:我的代码如下:

OptoolsRepo='rhel-7-server-7.0-rpms'   

     if [ -e /etc/yum.repos.d/$OptoolsRepo ]
     then 
        echo " "
            echo "Your Repo For OpenStack OpTools already exists."
          else
        #       function add-repo() {
        #               reponame='rhel-7-server-rpms'
        #               url='XXXXXXX/XXX/XXX/XXXX/'
                        touch /etc/yum.repos.d/$OptoolsRepo.repo
                        echo -e "[$OptoolsRepo]\nname=$OptoolsRepo\nbaseurl=${urlOptools}\nsselverify=0\nenabled=1\ngpgcheck=0\nmetadata_expire=12h"  >> /etc/yum.repos.d/$OptoolsRepo.repo
        #}
     fi
/etc/yum.repos.d/
中,我看到了以下内容:

[root@XXXXX ~]# ls -lah /etc/yum.repos.d/
total 52K
drwxr-xr-x  2 root root 4.0K Oct 22 13:42 .
drwxr-xr-x 91 root root 8.0K Oct 19 14:18 ..
-rw-r--r--  1 root root 4.0K Oct 21 14:09 .repo
-rw-r--r--  1 root root  254 Jun 29 03:59 rhel7-isv.repo
-rw-r--r--  1 root root  269 Jun 19 10:45 rhel7-security.repo
-rw-r--r--  1 root root  518 Oct 22 13:42 rhel-7-server-7.0-rpms

我不知道为什么会这样。我的“if”语句有语法问题吗?如果有人能帮忙,我会很乐意的

这只是一个语法错误,正确的方法是:

#!/bin/bash

OptoolsRepo='rhel-7-server-7.0-rpms'   

     if [ -e "/etc/yum.repos.d/"$OptoolsRepo ]; then

        echo " "
            echo "Your Repo For OpenStack OpTools already exists."
          else
        #       function add-repo() {
        #               reponame='rhel-7-server-rpms'
        #               url='XXXXXXX/XXX/XXX/XXXX/'
                        touch /etc/yum.repos.d/$OptoolsRepo.repo
                        echo -e "[$OptoolsRepo]\nname=$OptoolsRepo\nbaseurl=${urlOptools}\nsselverify=0\nenabled=1\ngpgcheck=0\nmetadata_expire=12h"  >> /etc/yum.repos.d/$OptoolsRepo.repo
        #}
     fi

那你为什么把
'
放在周围?if语句的一般语法是:if[//statement];然后甚至不是
,而是反勾号。需要澄清的是,问题是语句没有识别出repo文件已经存在。您应该从这个代码片段中得到一个错误吗?你是吗?如果你是,你应该在你的问题中包括这一点,所以这里的问题是你测试了错误的文件,因为你错过了
.repo
扩展名?嘿,道格拉斯,不幸的是,这并没有解决问题。我认为只要then与语句本身在同一行上,就只需要使用分号。的确,只有当
then
出现在不同的行上时,才需要使用分号,但这应该可以解决您的问题,因为@douglas还删除了
if
语句中
then
周围的错误反勾号。很抱歉,我的问题不正确!我没有输入
“然后”
,这是我输入代码时的上传错误。想象一下没有
'then'
@user2019182调试脚本add-x in#的语句/bin/bash。例:#/bin/bash-xahh非常有用<代码>+echo'+'['-e/etc/yum.repos.d/rhel-7-server-7.0-rpms']+-touch/etc/yum.repos.d/rhel-7-server-7.0-rpms+echo-e'[rhel-7-server-7.0-rpms]\nname=rhel-7-server-openstack-7.0-optools-rpms\nbaseurl=XXXXX/\nsselvify=0\nenabled=1\ngpgcheck=0\nmetadata\u expire=12h'