2

这两者有什么区别?

  1. 使用&&||

    command1 && command2 || command3
    
  2. 使用ifelse

    if command1  
    then  
        command2  
    else  
        command3  
    fi
    
4

2 回答 2

4

后者将始终直观地正常工作。前者有一个边界条件,两者command2command3可以执行。

于 2013-06-26T02:11:39.953 回答
2

在第一个示例中,如果 command1 或 command2 失败,将执行 command3:如果 command1 通过但 command2 失败,则将执行 command3。在 if-then-else 示例中,只有在 command1 失败时才会执行 command3。

换句话说,当翻译成 if-then-else 时,第一个变成:

if command1
then
    if !command2
    then
        command3
    fi
else
    command3
fi

使用 command1=true、command2=false 和 command3=echo 'something' 您可以看到区别。&&-||版本:

true && false || echo 'something'

something作为输出产生。使用if-then-else版本时:

if true
then
    false
else
    echo 'something'
fi

你将没有输出。

于 2013-06-26T02:43:55.833 回答