在bash中这两种方式的区别是什么?
这两者有什么区别在bash中这两种方式的区别是什么?,bash,Bash,这两者有什么区别 使用&&和|: command1 && command2 || command3 使用if和else: if command1 then command2 else command3 fi 后者将始终有效。前者有一个边界条件,可以执行command2和command3。在第一个示例中,如果command1或command2失败,将执行command3:如果command1通过,但command2失败,将执行comman
&&
和|
:
command1 && command2 || command3
if
和else
:
if command1
then
command2
else
command3
fi
后者将始终有效。前者有一个边界条件,可以执行
command2
和command3
。在第一个示例中,如果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'
if true
then
false
else
echo 'something'
fi
将产生某物
作为输出。使用if-then-else
版本时:
true && false || echo 'something'
if true
then
false
else
echo 'something'
fi
您将没有输出。很明显,这两个示例的行为不同。哪一个行为“正确”,哪一个是童车,当然取决于意图是什么!我在这里有点争论,但我不认为“直觉”是一个更好的词。考虑<代码> iStasePuuliField& & Runl FuffyNoTyjyAtfuluaSurvivue/Cuth>:它既直观又正确,但<代码> I/St/Eth/Fi版本既不直观也不正确。我猜想嵌套<代码>是真的,如果 S更可读。1两个示例在语义上的含义不同,因此这不是可读性问题。查看我的答案了解详细信息。突然想起我做过这样的脚本。我甚至画了一张流程图来看看。