[i=s] 本帖最后由 释梵 于 2009-3-13 17:20 编辑 [/i]
1 if cmp a b &> /dev/null # 阻止输出.
2 then echo "Files a and b are identical."
3 else echo "Files a and b differ."
4 fi
这段命令中,1句中是cmp a b还是cmp a b &> /dev/null产生返回值让if判断?
如果是cmp a b,那&>是什么意思?有什么作用?为什么要阻止输出?
如果是cmp a b &> /dev/null,它的返回值如何判断?
释梵 于 2009-03-13 17:19:41发表:
相思爱文你好牛!签名回答都很牛!
yucunlin0811 于 2009-03-10 13:33:44发表:
应该是 if cmp a b > /dev/null 2>&1 就可以了.
输出结果和错误信息都将忽略.
相思爱文 于 2009-03-09 21:50:51发表:
有个小错误,错误信息的输出重定向是2>
linux数据流分为:
标准输出1>
错误输出2>
标准输入<
如果只是>代表的是标准输出
1> 和2>可以指向不同的文件,如果指向同一个文件,要用
命令 1> 文件 2>&1
这种形式。
相思爱文 于 2009-03-09 21:47:24发表:
命令& >
在终端打开多个程序时我常用啊。作用就是后台执行,加输出重定向。
比如我打开一个终端。然后执行桌面程序
stardict &>/dev/null
gedit & > /dev/null
这样就可以使用星际译王各文本编辑器了。因为加了&,在后台执行,我还能在终端使用其他命令。
另外用>将输出重定向到空设备,终端就不会有输出信息了。否则显示的信息不乱了吗。
fman 于 2009-03-04 10:42:32发表:
&> /dev/null 就是把程序运行中的错误信息和执行结果重定向输出到/dev/null 中,重定向输出到/dev/null
就意味着错误信息和执行结果将会被忽略
释梵 于 2009-03-02 11:49:49发表:
。。。。谢谢你,虽然最关键的地方落过去了。。。。
wang7131984 于 2009-03-02 11:31:08发表:
你应该找一本讲原理的书来看,光讲语法一点用都没有。
wang7131984 于 2009-03-02 11:30:22发表:
要弄清楚在shell中是根据什么来进行条件判断的,不是布尔值而命令执行的退出状态。
命令执行成功,退出状态为0,则表示真
命令执行失败,退出状态为非0,则表示假
所以 [[ 字符串 ]]退出状态是0,因为这条命令执行成功了,是真
至于 & > 我也从未见过,不过这句只要cmp a b > /dev/null就可以了。cmp命令是会输出结果的,所以要将这些结果重定向。
释梵 于 2009-03-02 11:01:07发表:
附:该书上出现了我见过的最长的变量名 :COMMAND_WHOSE_EXIT_STATUS_IS_0_UNLESS_ERROR_OCCURRED
o(∩_∩)o...哈哈
释梵 于 2009-03-02 10:59:00发表:
阻止输出我好像有点懂了,关键是&>是什么?