shell命令串联起来执行的几种方法


在写shell脚本或是在shell环境里面,经常需要把多条命令前后串起来执行。常见的几种用法是:

*  command1 ; command2 ; command3 ; ...

;隔开各条命令,命令串起顺序执行并互相不影响。即使其中某一条命令执行失败,后面的命令也继续执行。

经常在shell里面敲多条命令,懒得一条一条地敲回车,就这么写。

*  command1 | command2 | command3 | ...

| 隔开各条命令,|是shell里面的管道操作符号(pipe operator)。前一条命令的结果,作为后一条命令的输入。

管道操作符有时候可以帮助我们省很多事情,如下面的这组命令搜索出所有的目录,在把搜索出来目录的权限设置为777.

find ./ -type d | xargs chmod 777

* 逻辑操作 && 和 ||

&& 和 ||因为是Shell中的“与”和“或”操作,就放在一起说。使用它们最大的特点就是某条命令执行的结果(成功和失败),能够
影响到是否执行后续的命令。

它们的执行规则如下:
command1 && command2 && command3 && ...    从左到右执行,当前面的命令 执行“成功”后才继续执行后面的命令。
command1 || command2 || command3 || ..          从左到右执行,当前面的命令 执行“失败”后才继续执行后面的命令。

命令执行成功是指其返回值等于0。  以date命令为例(之所以选择date,是因为其返回值总是0),下面两条语句是等价的,都会输出"date: successed"
date && echo "date: successed"

date; ret_code=$? ; [ $ret_code = 0 ] && echo "date: successed"
上面的第二条语句取出了date命令的返回值并和0进行比较。当比较的结果为真时候。就接着执行后面的echo语句。

“||" 常见的一种用法是在Makefile里面,当需要进入到不同目录里面进行编译,当其中一个目录中的编译发生 错误的时候,就整个退出:
target:
    for subdir in "dir1 dir2 dir3"; do \
      make -C $$subdir || exit 1; \
    done





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值