我正在编写一个bash脚本,将另一个命令的输出重定向到正确的位置.基本上,当从shell /命令行调用脚本时,我想将输出发送到STDOUT.但是,当bash脚本从其他应用程序(例如另一个bash脚本,某些应用程序,或者我的Awesome窗口管理器中的awesome-prompt插件)中执行时,我想将输出重定向到其他地方.
尝试这个:
原文链接:https://www.f2er.com/bash/387193.htmlps -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功能的混合体.