答:
既然有
2>&1
来½
2>
转到
1>
去,那么应该也会有
1>&2
吧?没错!就是这个概念!因此你可
以这样作:
[dmtsai@study ~]$
echo "error message" 1>&2
[dmtsai@study ~]$
echo "error message" 2> /dev/null 1>&2
你会发现第一条有讯息输出到屏幕上,第二条则没有讯息!这表示该讯息已经是透过
2> /dev/null
丢到垃圾桶去了!
可以肯定是错误讯息啰!
^_^
10.5.2
命令执行的判断依据:
; , &&, ||
在某些情况下,很多指令我想要一次输入去执行,而不想要分次执行时,该如何是好?基本上你有两
个选择,
一个是透过第十二章要½绍的
shell script
撰写½本去执行,一种则是透过底下的½绍来一
次输入多重指令喔!
.
cmd ; cmd (
不考虑指令相关性的连续指令下达
)
在某些时候,我们希望可以一次执行多个指令,例如在关机的时候我希望可以先执行两次
sync
同步
化写入磁盘后才
shutdown
计算机,那么可以怎么作呢?这样做呀:
[root@study ~]#
sync; sync; shutdown
-
h now
在指令与指令中间利用分号
(;)
来隔开,这样一来,分号前的指令执行完后就会立刻½着执行后面的
指令了。
这真是方便啊~再来,换个½度来想,万一我想要在某个目录底下½立一个文件,也就是
说,如果该目录存在的话,
那我才½立这个文件,如果不存在,那就算了。也就是说这两个指令彼
此之间是有相关性的,
前一个指令是否成功的执行与后一个指令是否要执行有关!那就得动用到
&&
||
啰!
.
$. (
指令回传值
)
&&
||
如同上面谈到的,两个指令之间有相依性,而这个相依性主要判断的地方就在于前一个指令执行的½
果是否正确。
还记得本章之前我们曾½绍过
指令回传值
吧!嘿嘿!没错,您真聪明!就是透过这个
回传值啦!
再复习一次『
若前一个指令执行的½果为正确,在
Linux
底下会回传一个
$. = 0
的值
』。
那么我们怎么透过这个回传值来判断后续的指令是否要执行呢?这就得要½由『
&&
』及『
||
』的
帮忙了!
注意喔,
两个
&
之间是没有空格的!那个
|
则是
[Shift]+[\]
的按键½果
指令下达情况
说明
cmd1 && cmd2
1.
cmd1
执行完毕且正确执行
($.=0)
,则开始执行
cmd2
2.
cmd1
执行完毕且为错误
($.
0)
,则
cmd2
不执行。
cmd1 || cmd2
1.
cmd1
执行完毕且正确执行
($.=0)
,则
cmd2
不执行。
2.
cmd1
执行完毕且为错误
($.
0)
,则开始执行
cmd2