10.5.2
、指令依序执行的关系示意图
上面这张图显示的两股数据中,上方的线段为不存在
/tmp/abc
时所½行的指令行为,下方的线段则
是存在
/tmp/abc
所在的指令行为。如上所述,下方线段由于存在
/tmp/abc
所以导致
$.=0
,让中间
mkdir
就不执行了!
并½
$.=0
继续往后传给后续的
touch
去利用啦!瞭乎?在任何时刻你都
可以拿上面这张图作为示意!
让我们来想想底下这个例题吧!
例题:
ls
测试
/tmp/vbirding
是否存在,若存在则显示
"exist"
,若不存在,则显示
"not exist"
答:
这又牵涉到逻辑判断的问题,如果存在就显示某个数据,若不存在就显示其他数据,那我可以这样做:
ls /tmp/vbirding && echo "exist" || echo "not
exist"
意思是说,当
ls /tmp/vbirding
执行后,若正确,就执行
echo "exist"
,若有问题,就执行
echo "not exist"
!那如
果写成如下的状况会出现什么?
ls /tmp/vbirding || echo "not exist" && echo "exist"
这其实是有问题的,为什么呢?由图
10.5.2
的流程½绍我们知道指令是一个一个往后执行,
因此在上面的例子
当中,如果
/tmp/vbirding
不存在时,他会½行如下动作:
1.
ls /tmp/vb
irding
不存在,因此回传一个非为
0
的数值;
2.
½下来经过
||
的判断,发现前一个指令回传非为
0
的数值,因此,程序开始执行
echo "not exist"
,而
echo "not exist"
程序肯定可以执行成功,因此会回传一个
0
值给后面的指令;
3.
经过
&&
的判断,咦!是
0
啊!所以就开始执行
echo "exist"
所以啊,嘿嘿!第二个例子里面竟然会同时出现
not exist
exist
呢!真神奇~
经过这个例题的练习,你应该会了½,
由于指令是一个½着一个去执行的,因此,如果真要使用判断,
那么这个
&&
||
的顺序就不能搞错
。一般来说,假设判断式有三个,也就是:
command1 && command2 || command3
而且顺序通常不会变,因为一般来说,
command2
command3
会放置肯定可以执行成功的指令,
因此,依据上面例题的逻辑分析,您就会晓得为何要如此放置啰~这很有用的啦!而且
.....
考试也很
常考~
10.6
管线命令
(pipe)
就如同前面所说的,
bash
命令执行的时候有输出的数据会出现!
那么如果这群数据必需要经过几
道手续之后才能得到我们所想要的格式,应该如何来设定?
这就牵涉到管线命令的问题了
(pipe)
管线命令使用的是『
|
』这个½定符号
另外,
管线命令与『连续下达命令』是不一样的呦
点底下我们会再说明。底下我们先举一个例子来说明一下简单的管线命令。