作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们可以在常规命令上使用 stdbuf,例如
stdbuf -o 0 echo aaa
但是我不能在 bash 函数上使用它,例如
function tmpf() { echo aaa; }
stdbuf -o 0 tmpf
这是什么原因?谢谢!
最佳答案
原因是 bash 函数是 bash session 内部的。 stdbuf
和类似的实用程序是独立的程序,无法访问 shell session ,而且实际上对 bash 一无所知。所以它只能运行可执行文件。
因为 bash 有一些小窍门,您可以导出一个 bash 函数——就像导出一个环境变量——这将使在子进程中运行的 bash 进程可以访问该函数。所以你可以这样做:
function tmpf() { echo aaa; }
export -f tmpf
stdbuf -o 0 bash -c 'tmpf'
但即使在那里,您也需要获取 stdbuf
来执行子 bash
才能调用该函数。
关于bash - 如何在 bash 函数上使用 stdbuf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35348559/
我是一名优秀的程序员,十分优秀!