/de" />
红联Linux门户
Linux帮助

if问题【0】

发布时间:2009-03-02 10:55:41来源:红联作者:释梵
[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,它的返回值如何判断?
文章评论

共有 10 条评论

  1. 释梵 于 2009-03-13 17:19:41发表:

    相思爱文你好牛!签名回答都很牛!

  2. yucunlin0811 于 2009-03-10 13:33:44发表:

    应该是 if cmp a b > /dev/null 2>&1 就可以了.
    输出结果和错误信息都将忽略.

  3. 相思爱文 于 2009-03-09 21:50:51发表:

    引用:
    &> /dev/null 就是把程序运行中的错误信息和执行结果重定向输出到/dev/null 中,重定向输出到/dev/null
    就意味着错误信息和执行结果将会被忽略
    fman 发表于 2009-3-4 10:42

    有个小错误,错误信息的输出重定向是2>
    linux数据流分为:
    标准输出1>
    错误输出2>
    标准输入<
    如果只是>代表的是标准输出
    1> 和2>可以指向不同的文件,如果指向同一个文件,要用
    命令 1> 文件 2>&1
    这种形式。

  4. 相思爱文 于 2009-03-09 21:47:24发表:

    命令& >
    在终端打开多个程序时我常用啊。作用就是后台执行,加输出重定向。

    比如我打开一个终端。然后执行桌面程序
    stardict &>/dev/null
    gedit & > /dev/null
    这样就可以使用星际译王各文本编辑器了。因为加了&,在后台执行,我还能在终端使用其他命令。
    另外用>将输出重定向到空设备,终端就不会有输出信息了。否则显示的信息不乱了吗。

  5. fman 于 2009-03-04 10:42:32发表:

    &> /dev/null 就是把程序运行中的错误信息和执行结果重定向输出到/dev/null 中,重定向输出到/dev/null
    就意味着错误信息和执行结果将会被忽略

  6. 释梵 于 2009-03-02 11:49:49发表:

    。。。。谢谢你,虽然最关键的地方落过去了。。。。

  7. wang7131984 于 2009-03-02 11:31:08发表:

    你应该找一本讲原理的书来看,光讲语法一点用都没有。

  8. wang7131984 于 2009-03-02 11:30:22发表:

    要弄清楚在shell中是根据什么来进行条件判断的,不是布尔值而命令执行的退出状态。
    命令执行成功,退出状态为0,则表示真
    命令执行失败,退出状态为非0,则表示假
    所以 [[ 字符串 ]]退出状态是0,因为这条命令执行成功了,是真
    至于 & > 我也从未见过,不过这句只要cmp a b > /dev/null就可以了。cmp命令是会输出结果的,所以要将这些结果重定向。

  9. 释梵 于 2009-03-02 11:01:07发表:

    附:该书上出现了我见过的最长的变量名 :COMMAND_WHOSE_EXIT_STATUS_IS_0_UNLESS_ERROR_OCCURRED
    o(∩_∩)o...哈哈

  10. 释梵 于 2009-03-02 10:59:00发表:

    阻止输出我好像有点懂了,关键是&>是什么?