&&运算符:

command1  && command2

&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”。

语法格式如下:

command1 && command2 [&& command3 ...]

1 命令之间使用 && 连接,实现逻辑与的功能。

2 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。

3 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

示例 1

malihou@ubuntu:~$ cp ~/Desktop/1.txt ~/1.txt && rm ~/Desktop/1.txt && echo "success"

示例 1 中的命令首先从 ~/Desktop 目录复制 1.txt 文件到 ~ 目录;执行成功后,使用 rm 删除源文件;如果删除成功则输出提示信息。

||运算符:

command1 || command2

||则与&&相反。如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。

1 命令之间使用 || 连接,实现逻辑或的功能。

2 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。

3 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。

示例 2

malihou@ubuntu:~$ rm ~/Desktop/1.txt || echo "fail"

在示例 2 中,如果 ~/Desktop 目录下不存在文件 1.txt,将输出提示信息。

示例 3

malihou@ubuntu:~$ rm ~/Desktop/1.txt && echo "success" || echo "fail"

在示例 3 中,如果 ~/Desktop 目录下存在文件 1.txt,将输出 success 提示信息;否则输出 fail

提示信息。

如果希望把几个命令合在一起执行, s h e l l提供了两种方法。既可以在当前s h e l l也可以在子s h e l l中执行一组命令。

()运算符:

为了在当前shell中执行一组命令,可以用命令分隔符(即",")隔开每一个命令,并把所有的命令用圆括号()括起来。

它的一般形式为:

( 命令;命令;命令… )

1 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。执行的效果等同于多个独立的命令单独执行的效果。

2 () 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。

3 命令组合常和命令执行控制结合起来使用。

示例 4

malihou@ubuntu:~$ rm ~/Desktop/1.txt || (cd ~/Desktop/;ls -a;echo "fail")

在示例 4 中,如果目录 ~/Desktop 下不存在文件 1.txt,则执行命令组合。

{}运算符:

如果使用{}来代替(),那么相应的命令将在子shell而不是当前shell中作为一个整体被执行,只有在{}中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中执行,否则在当前shell执行。

它的一般形式为:

{ 命令;命令;命令… }

(注意:在使用{}时,{}与命令之间必须使用一个空格)

测试:

~$ A=1;echo $A;{ A=2; };echo $A

1

2

~$ A=1;echo $A;( A=2; );echo $A

1

1

转载于:https://blog.51cto.com/iter2012/1613705

shell中和||的使用方法相关推荐

  1. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  2. Hadoop HBase概念学习系列之hbase shell中执行java方法(高手必备)(二十五)

    hbase shell中执行java方法(高手必备),务必掌握! 1. 2. 3. 4. 更多命令,见scan help.在实际工作中,多用这个!!! API参考: http://hbase.apac ...

  3. PHP+shell实现多线程的方法

    PHP+shell实现多线程的方法 这里介绍怎样借助shell脚本实现多线程. 先写个简单的php代码.这里为了让脚本运行时间更长.方便看效果,sleep一下.呵呵.先看下test.php的代码:ls ...

  4. msf拿到shell显示乱码解决方法以及chcp各种编码的补充

    文章目录 前言 前言 msf拿到shell之后输入命令经常会有乱码,只需要一条命令就能解决. chcp 65001 chcp 65001 的意思是 :改变当前活动代码页为 UTF-8,让当前的批处理窗 ...

  5. linux脚本攻击,恶意shell脚本攻击的方法与预防策略

    前言 网络安全对于互联网从业者而言,一直是一个重要的.绕不开的话题,PowerShell可以给运维人员带来极大的方便,但同时也是被攻击者盯上的重灾区.想想就非常可怕,攻击的人只要能从远程执行shell ...

  6. Shell编程-文件读取方法集锦

    在这里总结一下Shell读取文件的方法 [plain] view plaincopy a), #使用read命令读取一行数据 while read myline do echo "LINE: ...

  7. linux nc反弹命令,详解NC反弹shell的几种方法

    假如ubuntu.centos为目标服务器系统 kali为攻击者的系统,ip为:192.168.0.4,开放7777端口且没被占用 最终是将ubuntu.centos的shell反弹到kali上 正向 ...

  8. linux进度条脚本,linux shell进度条实现方法

    linux shell进度条实现方法 直接看代码吧,很简单 复制代码 代码如下: #!/bin/bash b='' i=0 while [ $i -le  100 ] do printf " ...

  9. php反弹教程,详解NC反弹shell的几种方法

    假如ubuntu.CentOS为目标服务器系统 kali为攻击者的系统,ip为:192.168.0.4,开放7777端口且没被占用 最终是将ubuntu.CentOS的shell反弹到kali上 正向 ...

最新文章

  1. node debug包
  2. DbgPrint/KdPrint输出格式控制
  3. 移动html特殊链接【打电话_发短信_发邮件】
  4. 放弃Python转向Go语言:我们找到了以下9大理由
  5. google浏览器 隐藏功能开启
  6. 轻松学习 Flex 布局的小游戏
  7. 外星人装深度linux,外星人alienware 18笔记本怎么安装win10系统
  8. 如何设置计算机网共享文件夹,局域网内如何设置共享文件夹呢
  9. centos java7安装_Centos7 JDK7安装配置
  10. I2C总线协议的简要说明
  11. WebEx 播放器下载
  12. IC卡(智能卡)APDU通讯总结
  13. matlab 判断鼠标按下_如何让MATLAB控制你的鼠标和键盘
  14. 湖南省中职计算机应用教资笔试+面试心得
  15. 打雷以后必定会下大雨
  16. Speedoffice (word)文档里面怎样自动生成目录
  17. pdfminer转换PDF为html,【记录】尝试使用pyPdf将不可复制的PDF转换为文本或HTML
  18. ssis+ssas+ssrs 介绍
  19. 连连看 算法 2013-12-29
  20. CentOS7下安装Hadoop伪分布式

热门文章

  1. android action pick,Intent中各种常见的Action
  2. Java在Quant应用_java – 如何绘制quantil band(在R中)
  3. c语言编程题餐饮服务打分,求详细分析C语言题餐饮服务质量调查打分题和答案..._质量员考试_帮考网...
  4. python123第k序元素查找_Python实现折半查找并用matplotlib实现动态过程可视化
  5. 苹果电脑安装python3密码_mac系统安装Python3初体验
  6. java异常类 Object类
  7. java 匿名类调用方法_java – 从匿名类调用新定义的方法
  8. 26个音序的正确写法和占格_部编语文汉语拼音音序表,示范朗读+视频教学
  9. 同一个类 cannot be cast to_留学热门assignment之 税收筹划类essay
  10. CocoaPods私有库搭建的记录