检查是否从shell或其他脚本/应用程序调用了bash脚本

前端之家收集整理的这篇文章主要介绍了检查是否从shell或其他脚本/应用程序调用了bash脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个bash脚本,将另一个命令的输出重定向到正确的位置.基本上,当从shell /命令行调用脚本时,我想将输出发送到STDOUT.但是,当bash脚本从其他应用程序(例如另一个bash脚本,某些应用程序,或者我的Awesome窗口管理器中的awesome-prompt插件)中执行时,我想将输出重定向到其他地方.

在bash中是否有任何方法可以查看脚本是如何被调用的?

尝试这个:
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.f2er.com/bash/387193.html

猜你在找的Bash相关文章