一、;
cmd1;cmd2
无论cmd1是否执行成功,cmd2都会执行,执行顺序是先执行cmd1,
如:
#uname -p
x86_64
#[[ $(uname -p) == 'x86_64' ]] ; echo "ok" ## cmd1执行成功
ok
#[[ $(uname -p) == 'sw_64' ]] ; echo "ok" ## cmd1执行失败
ok
## test.sh
echo "=================; x86============"
[[ $(uname -p) == 'x86_64' ]] ; echo "ok"
echo "=================; sw ============"
[[ $(uname -p) == 'sw_64' ]] ; echo "ok"
bash -x test.sh
+ echo '=================; x86============'
=================; x86============
++ uname -p
++ uname -p
++ uname -p
+ [[ x86_64 == \x\8\6\_\6\4 ]]
+ [[ x86_64 == \x\8\6\_\6\4 ]]
+ echo ok
ok
+ echo '=================; sw ============'
=================; sw ============
++ uname -p
+ [[ x86_64 == \s\w\_\6\4 ]]
+ [[ x86_64 == \s\w\_\6\4 ]]
+ echo ok
ok
二、&
cmd1&cmd2
cmd1和cmd2同时执行,成功与否退出状态不同
#uname -p
x86_64
#[[ $(uname -p) == 'x86_64' ]] & echo "ok"
[1] 52583
ok
[1]+ Done [[ $(uname -p) == 'x86_64' ]]
#[[ $(uname -p) == 'sw_64' ]] & echo "ok"
[1] 53008
ok
[1]+ Exit 1 [[ $(uname -p) == 'sw_64' ]]
## test.sh
echo "============= & x86 =============="
[[ $(uname -p) == 'x86_64' ]] & echo "ok"
echo "============= & sw =============="
[[ $(uname -p) == 'sw_64' ]] & echo "ok"
+ echo '============= & x86 =============='
============= & x86 ==============
+ echo ok
ok
+ echo '============= & sw =============='
============= & sw ==============
+ echo ok
ok
三、&&
cmd1&&cmd2
只有cmd1执行成功之后,才会执行cmd2
#uname -p
x86_64
#[[ $(uname -p) == 'sw_64' ]] && echo "haha"
#[[ $(uname -p) == 'x86_64' ]] && echo "ok"
ok
## test.sh
+ echo '===============&& sw=============='
===============&& sw==============
++ uname -p
+ [[ x86_64 == \s\w\_\6\4 ]]
+ echo '==============&& x86=============='
==============&& x86==============
++ uname -p
+ [[ x86_64 == \x\8\6\_\6\4 ]]
+ echo ok
ok
四、参考文档
1、https://blog.51cto.com/bovin/1869091