Shell 中 ;、&、&& 的区别

一、

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

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值