我正在编写一个bash脚本,将另一个命令的输出重定向到正确的位置.基本上,当从shell /命令行调用脚本时,我想将输出发送到STDOUT.但是,当bash脚本从其他应用程序(例如另一个bash脚本,某些应用程序,或者我的Awesome窗口管理器中的awesome-prompt插件)中执行时,我想将输出重定向到其他地方.
尝试这个:
ps -o stat= -p $PPID
如果结果包含“s”(小写),则它可以从命令行运行,也可以从脚本中反向运行.告诉那两者:
ps -o stat= -p $$
如果没有背景,将包含“”.
这是一张桌子:
Run $$ $PPID CL S+ Ss CL& S Ss+ Script S+ S+ Script& S S Script(&) S Ss Script&(&) S NULL
其中(&)表示子脚本背景和&表示运行它的父脚本(这是“脚本”所指的)是后台的. CL表示命令行. NULL表示ps输出null,$PPID为“1”.
来自man ps:
s is a session leader + is in the foreground process group
应该注意的是,这个答案是基于GNU ps的,但是BSD的手册页(包括OS X)表明了类似的功能. GNU ps是一种包含BSD功能的混合体.
原文地址:https://www.jb51.cc/bash/387193.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。