somecmd >my.file 2>&1
somecmd 2>&1 >my.file
为什么这两段代码的输出不一样,程序的执行顺序或者说逻辑是怎么样的
bash中的程序执行顺序问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【以下回答由 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
命令的标准输出,而标准错误会被输出到终端。总结起来,这两段代码的差异在于重定向语句的执行顺序不同。第一个代码示例先执行输出重定向,然后执行错误重定向;而第二个代码示例先执行错误重定向,然后执行输出重定向。这种不同的执行顺序导致了两段代码的输出结果不一样。
【相关推荐】
- 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7714852
- 这篇博客也不错, 你可以看下练习 10:Bash:程序退出代码(返回状态)
- 除此之外, 这篇博客: 如何在Bash中将变量设置为命令的输出?中的 第一种简单,老旧且兼容的方式 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 VMBox虚拟机无法访问
- ¥15 skd显示找不到头文件
- ¥15 机器视觉中图片中长度与真实长度的关系
- ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
- ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
- ¥15 java 的protected权限 ,问题在注释里
- ¥15 这个是哪里有问题啊?
- ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
- ¥15 texstudio的问题,
- ¥15 spaceclaim模型变灰色