【问题标题】:How to stop the execution successive one if preceding one fails when commands are written in line by line by using && operator使用 && 运算符逐行写入命令时,如果前一个失败,如何停止执行后续一个
【发布时间】:2017-05-30 05:18:13
【问题描述】:

我有一些用于在 shell 脚本中安装的命令。如果前面的命令失败,我正在使用 && 来停止执行后续命令。 例如:

yum -y install httpd && yum -y install ntp && yum -y install XYZ && yum -y install libxml2-devel.

执行在 XYZ 处停止,因为 XYZ 不是有效命令。

但问题是,当这些逐行编写时,&& 函数不起作用。

yum -y install httpd &&
yum -y install ntp &&
yum -y install XYZ && 
yum -y install libxml2-devel && 

当以这种方式编写命令时,所有 libxml2-devel 也在执行,即使 XYZ 失败。 我做错了什么吗? 请帮忙。

使用&&运算符逐行写入命令时,如果前一个执行失败,如何停止后续执行。

【问题讨论】:

    标签: bash shell centos7


    【解决方案1】:

    删除最后一个&&; && 是一个逻辑运算符,有条件地连接两个命令,具体取决于退出状态——第二个命令只有在第一个命令成功时才会运行(以状态 0 退出)。

    在最后一个&& 之后你没有使用任何命令,所以你会得到意外的文件结束错误。因此,删除最后一个 &&(或在此之后添加一些内容):

    yum -y install httpd &&
    yum -y install ntp &&
    yum -y install XYZ && 
    yum -y install libxml2-devel
    

    【讨论】:

    • 然后我得到这样的available.libxml2-devel错误:无事可做
    • @prasanna 这是一个完全不同的错误......请提出一个新问题......
    • 感谢您的回答。然后我就变成这样了。从缓存的可用主机文件加载镜像速度.libxml2-devel 错误:无事可做。但我不想要这个。当我在一行中执行上述错误没有发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多