Linux shell的&&和||--转载

Linux shell的&&和||

shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? ==
1 时,表示执行失败。

www.2cto.com

有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell
提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 ||
前面命令的返回值来控制其后面命令的执行。

&&(命令执行控制)

语法格式如下:

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

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

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

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

www.2cto.com

示例 1

[email protected]:~$ cp ~/Desktop/1.txt ~/1.txt && rm ~/Desktop/1.txt
&& echo "success"

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

||(命令执行控制)

语法格式如下:

command1 || command2 [|| command3 ...]

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

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

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

示例 2

[email protected]:~$ rm ~/Desktop/1.txt || echo "fail"

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

示例 3

[email protected]:~$ rm ~/Desktop/1.txt && echo "success" || echo
"fail"

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

shell 提供了两种方法(() 和
{})实现将几个命令合作一起执行,代替独立执行。这种方式并不能控制命令是否需要执行,仅是将多个单独的命令组合在一起执行,最终命令的返回值将由最后一条命令的返回值来决定。

() (命令组合)

语法格式如下:   www.2cto.com

(command1;command2[;command3...])

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

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

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

示例 4

[email protected]:~$ rm ~/Desktop/1.txt || (cd ~/Desktop/;ls -a;echo
"fail")

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

转自:http://www.2cto.com/os/201302/189655.html

Linux shell的&&和||--转载,布布扣,bubuko.com

时间: 2024-10-24 22:31:10

Linux shell的&&和||--转载的相关文章

linux shell sleep/wait(转载)

2007-04-27 18:12 bash的基本配置是由配置文件组成的./etc/profile称之为shell的全局配置文件.另外一个文件在个人的目录下     个人目录/.bash-profile还有个文件在个人的目录下/etc/bashrc     是第二个全局配置文件,保存的是(函数别名等)在个人目录下也有个配置文件~/.bashrc环境变量:     变量名=变量值       例: LANG=en 是设置语言为英文                                   

linux shell数据重定向(输入重定向与输出重定向)详细分析(转载)

本文为转载 原文链接 http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值. linux启动后,会

linux shell if语句使用方法 [转载]

最精简的 if 命令的语法是: if TEST-COMMANDS; then CONSEQUENT-COMMANDS; fi TEST-COMMAND 执行后且它的返回状态是0,那么 CONSEQUENT-COMMANDS 就执行.返回状态是最后一个命令的退出状态,或者当没有条件是真的话为0. TEST-COMMAND 经常包括数字和字符串的比较测试,但是也可以是任何在成功时返回状态0或者失败时返回一些其他状态的一些命令.一元表达式经常用于检查文件的状态.如果对某个要素primaries, FI

Linux Shell 文本处理工具集锦(转载)

内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符的工具 sed 文本替换利器 awk 数据流处理工具 迭代文件中的行.单词和字符 本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的:我对shell脚本

(转)Linux学习要点(转载自红联)

Linux学习要点(转载自红联) 一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件包的常用安装方法 4. 学习添加外设,安装设备驱动程序(比如网卡) 5. 熟悉Grub/Lilo引导器及简单的修复操作 . 6. 熟悉Linux文件系统 和目录结构. 7. 掌握vi,gcc,gdb等常用编辑器,编译器,调试器 . 8. 理解shell别名.管道.I/O重定向.输入和输出以及shel

Linux Shell 运维脚本功底积累

1.删除Linux远程用户连接会话 [[email protected] logs]# w 10:45:28 up 15 days, 16:23, 4 users, load average: 0.00, 0.00, 0.00 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT root tty1 - Sun21 4days 0.00s 0.00s -bash root pts/0 192.168.1.2 09:11 0.00s 0.07s 0

linux shell的here document用法

转载自: http://my.oschina.net/u/1032146/blog/146941 什么是Here Document?Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下cmd << delimiter  Here Document Contentdelimiter 其作用是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数;比如在终端中输入cat <<

Linux Shell脚本与Vim常用操作笔记

本篇笔记记录最最基本的vim和shell操作. ShellScript能干什么 Shellscript类似与Windows的批处理,可以把很多指令汇总到一起,于是可以很容易地通过一个操作执行多个命令.很轻量,有效率. 在Vim中编写 Vim/Vi编辑器很强大,功能非常多,快捷键.指令更多,只需要知道最常用的就够了. Vi有3种工作模式 1.命令模式 进去之后的默认模式就是命令模式.能接受命令,但是不明文显示. 2.输入模式 命令模式按下a键就进入输入模式(还能按i.o.s等等).按Esc返回命令

《Linux Shell脚本攻略》 笔记 第一章:Shell起步基础

<Linux Shell脚本攻略> 笔记 第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符串的形式存储. 2.var=value; //赋值操作 var = value: //相等操作 3.获取字符串的长度 [[email protected] ~]$ var=yang [[email protected] ~]$ length=${#var} [[email protected] ~]$ echo $length