加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 通过命令重定向终端stdout

发布时间:2020-12-15 21:43:50 所属栏目:安全 来源:网络整理
导读:我想要做的只是将执行的命令的stdout重定向到管道.一个例子比我更好地解释它. $echo "Hello world" | cowsay 在cowsay中输出“Hello world”,我想预处理终端的/ bash stdout以通过cowsay $echo "Hello world" 这应该输出与第一个命令相同. 提前致谢. 解决方
我想要做的只是将执行的命令的stdout重定向到管道.一个例子比我更好地解释它.

$echo "Hello world" | cowsay

在cowsay中输出“Hello world”,我想预处理终端的/ bash stdout以通过cowsay

$echo "Hello world"

这应该输出与第一个命令相同.

提前致谢.

解决方法

您可以使用进程替换:

#!/bin/bash
exec >  >(cowsay)
echo "Hello world"

但是,有一些警告.如果你在后台开始任何事情,那么牛会等待它完成:

#!/bin/bash
exec >  >(cowsay)
echo "Hello world"
sleep 30 &           # Runs in the background
exit                 # Script exits immediately but no cow appears

在这种情况下,脚本将退出而不输出. 30秒后,当睡眠退出时,奶牛突然出现了.

您可以通过告诉程序在其他地方写入来解决这个问题,这样牛就不必等待它们了:

#!/bin/bash
exec >  >(cowsay)
echo "Hello world"
sleep 30 > /dev/null & # Runs in the background and doesn't keep the cow waiting
exit                   # Script exits and the cow appears immediately.

如果您没有在后台启动任何内容,那么您的某个工具或程序就可以.要找到哪些,请逐一重定向或评论它们,直到出现奶牛.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读