list(序列)是一个或多个管道,用操纵符;,&,&&,或||分开的序列,而且能够选择用;,&,或<newline>新行符停止.
这些序列操纵符中,&&和||优先级不异,其次是;和&,它们的优先级是不异的。
序列中能够有一个或多个新行符来分开下令,而不是利用分号分开。
假如一个下令是由把持操纵符&停止的,shell将在背景的子shell中实行这个下令。shell不会守候下令实行停止,前往形态老是0。以分号;分开的下令会被按次实行;shell会守候每一个下令顺次停止。前往形态是最初实行的下令的前往形态。
把持操纵符&&和||分离代表AND和OR序列。一个AND序列的情势是
command1&&command2
command2只要在command1前往0时才被实行。
一个OR序列的情势是
command1||command2
command2只要在command1前往非0形态时才被实行。AND和OR序列的前往形态是序列中最初实行的下令的前往形态。
n出格注重ifexpression中的&&||和BashLists序列中的&&||寄义是纷歧样的
---------------------------------
n几个含混观点切实其实定
Ø!&&||可使用到表达式毗连顶用于if等前提判别
Ø-oCa用在[]表达式中,&&||既能够用于[[]]外部,也能够用于毗连两个[]
if[]&&[]或if[]||[]
---------------------------------------
if["$an"=Y-o"$an"=y]
=if["$an"=Y]||["$an"=y]
=if[["$an"=Y||"$an"=y]]
如上三个等价,以下三个等价
-------------------------------------
if["$an"=Y-a"$an"=y]
=if["$an"=Y]&&["$an"=y]
=if[["$an"=Y&&"$an"=y]]
实比方下:
if[!"${PEERNIS}"="no"];then
if!["test"=="test"];thenecho"ok";fi
if[!"test"=="test"];thenecho"ok";fi
if[-x/etc/rc.d/init.d/ypbind]&&[-r/var/run/ypbind.pid];then
serviceypbindrestart>/dev/null2>&1
fi
[root@localhost~]#if[!"test"=="tet"-a"hi"=="hi"];thenecho"ok";fi
ok
[root@localhost~]#if[!"test"=="test"-o"hi"=="hi"];thenecho"ok";fi
ok
[root@localhost~]#if[!"test"=="test"-a"hi"=="hi"];thenecho"ok";fi
[root@localhost~]#if[!"test"=="tes"-a"hi"=="hi"];thenecho"ok";fi
ok
[root@localhost~]#if[!"test"=="tes"]&&["hi"=="hi"];thenecho"ok";fi
ok
[root@localhost~]#if[!"test"=="test"]&&["hi"=="hi"];thenecho"ok";fi
[root@localhost~]#if[!"test"=="test"]||["hi"=="hi"];thenecho"ok";fi
ok
[root@localhost~]#if!["test"=="test"]&&["hi"=="hi"];thenecho"ok";fi
[root@localhost~]#if!["tst"=="test"]&&["hi"=="hi"];thenecho"ok";fi
ok
[root@localhost~]#if[["tst"=="test"&&"hi"=="hi"]];thenecho"ok";fi
[root@localhost~]#if[["test"=="test"&&"hi"=="hi"]];thenecho"ok";fi
ok
[root@localhost~]#if[["est"=="test"||"hi"=="hi"]];thenecho"ok";fi
ok
Øif语句的换种写法:
if[condition];thencomand;fi=[condition]&&comd
if[!condition];thencomand;fi=![condition]&&comd
Øif前提中的重定向,制止尺度输入发生
if/sbin/lvmvgscan>/dev/null2>&1;then
action$"SettingupLogicalVolumeManagement:"/sbin/lvmvgchange-ay
fi
[root@localhost~]#ifls;thenecho"ok";fi
his.txtls.pdfmy.pcapset.shtcp.dumptcpdump.pdftcpdump.txttmpt.pcapt.sh
ok
[root@localhost~]#ifls>/dev/null2>&1;thenecho"ok";fi
ok
Ø可用于支解下令序列token分开符以下:
controloperator
Atokenthatperformsacontrolfunction.Itisoneofthefollowingsymbols:
||&&&;;;()||&<newline>
同理一个完全的指令,不管是切合语句语句,仍是可实行步伐或剧本,内置下令必需以行首开首大概由下面的controloperator支解
欢迎大家来到仓酷云论坛!
作者: 分手快乐 时间: 2015-1-16 09:38
标题: 来一发shell 步伐布局
安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
作者: 仓酷云 时间: 2015-1-24 07:43
熟读Linux系统有关知识,如系统目录树,有关内容可购书阅读或搜索论坛。
作者: 透明 时间: 2015-2-1 09:41
对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。
作者: 老尸 时间: 2015-2-7 05:44
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
作者: 灵魂腐蚀 时间: 2015-2-21 10:55
一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。
作者: 因胸联盟 时间: 2015-3-6 21:16
我学习Linux的心得体会 ,希望对大家的学习有所帮助,由于水平有限,本文难免有所欠缺,望请指正。
作者: 若相依 时间: 2015-3-20 21:49
一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢。
欢迎光临 仓酷云 (http://ckuyun.com/) |
Powered by Discuz! X3.2 |