姚传和 2023-09-05 15:04 采纳率: 20%
浏览 5

bash中的程序执行顺序问题

somecmd >my.file 2>&1
somecmd 2>&1 >my.file
为什么这两段代码的输出不一样,程序的执行顺序或者说逻辑是怎么样的

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-05 16:16
    关注

    【以下回答由 GPT 生成】

    这两段代码的输出差异源于重定向语句的执行顺序。

    在第一个代码示例中:

    somecmd > my.file 2>&1
    

    程序首先会执行somecmd命令,并将其标准输出(stdout)重定向到my.file文件中。然后,2>&1语句表示将标准错误(stderr)重定向到与标准输出相同的位置,也就是my.file文件。因此,my.file文件会包含somecmd命令的标准输出和标准错误。

    而在第二个代码示例中:

    somecmd 2>&1 > my.file
    

    程序首先会执行somecmd命令,并将其标准错误(stderr)重定向到与标准输出相同的位置,也就是终端(默认为终端)。然后,> my.file语句表示将标准输出(stdout)重定向到my.file文件中。因此,my.file文件只会包含somecmd命令的标准输出,而标准错误会被输出到终端。

    总结起来,这两段代码的差异在于重定向语句的执行顺序不同。第一个代码示例先执行输出重定向,然后执行错误重定向;而第二个代码示例先执行错误重定向,然后执行输出重定向。这种不同的执行顺序导致了两段代码的输出结果不一样。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月5日

悬赏问题

  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色