shell中连接符(并且和或者)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中连接符(并且和或者)相关的知识,希望对你有一定的参考价值。
&&(并且) 与 ||(或者)与;(和)
在上面刚刚提到了分号,用于多条命令间的分隔符。另外还有两个可以用于多条命令中间的特殊符号,那就是 “&&” 和 “||” 下面把这几种情况全列出:
command1 ; command2 和
command1 && command2 并且
command1 || command2 或者
&&:左边命令执行成功才会执行右边的命令。
|| :左边命令执行不成功,才会执行右边的命令。
;(分号):左边命令执行成功与否,后边的命令都会执行。
使用 ”;” 时,不管command1是否执行成功都会执行command2;
使用 “&&” 时,只有command1执行成功后,command2才会执行,否则command2不执行;
使用 “||” 时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。
在做实验前,想把所有的 test* 删除掉,可是删除的时候,却提示说权限不够,下面是排除问题的过程:
[[email protected] ~]# rm -rf test* rm: 无法删除"test2/test1": 权限不够 rm: 无法删除"test2/test3": 权限不够 rm: 无法删除"test2/test4": 权限不够 [[email protected] ~]# ls test* test1 test3 test4 [[email protected] ~]# lsattr test* -----a-------e- test2/test1 ----i--------e- test2/test3 -------------e- test2/test4 [[email protected] ~]# chattr -a test2/test1 [[email protected] ~]# chattr -i test2/test3 [[email protected] ~]# rm -rf test* rm: 无法删除"test2/test1": 权限不够 rm: 无法删除"test2/test3": 权限不够 rm: 无法删除"test2/test4": 权限不够 [[email protected] ~]# ls test* test1 test3 test4 [[email protected] ~]# ls -ld test* drwxrwxr-x 2 root root 4096 5月 10 10:12 test2 [[email protected] ~]# ls -l test2/* -rw-r--r-- 1 root root 6 5月 10 10:20 test2/test1 -rw-r--r-- 1 root root 0 5月 10 10:11 test2/test3 -rw-r--r-- 1 root root 0 5月 10 10:12 test2/test4 [[email protected] ~]# lsattr test2/* -------------e- test2/test1 -------------e- test2/test3 -------------e- test2/test4 [[email protected] ~]# lsattr test2 -------------e- test2/test1 -------------e- test2/test3 -------------e- test2/test4 [[email protected] ~]# lsattr -d test2 ----i--------e- test2 [[email protected] ~]# chattr -i test2/ [[email protected] ~]# rm -rf test2/
如果你之前跟着做过同样的实验,相信你也会出现同样的问题的。接下来要通过做实验来说明 “&&” 与 “||” 这两个特殊符号的作用:
[[email protected] ~]# touch test1 test3 [[email protected] ~]# ls test2 && touch test2 ls: 无法访问test2: 没有那个文件或目录 [[email protected] ~]# ls test2 ls: 无法访问test2: 没有那个文件或目录 [[email protected] ~]# ls test2 || touch test2 ls: 无法访问test2: 没有那个文件或目录 [[email protected] ~]# ls test* test1 test2 test3
本文出自 “12350027” 博客,谢绝转载!
以上是关于shell中连接符(并且和或者)的主要内容,如果未能解决你的问题,请参考以下文章