|
|
1
23
试试这个:
如果结果包含“s”(小写),则它要么是从命令行运行,要么是从脚本中后台运行。要区分这两种情况:
将包含一个“+”如果它不是背景。 这是一张桌子:
其中,(&)表示子脚本是background,而&表示运行它的父脚本(即“script”所指的)是background。CL表示命令行。NULL意味着ps输出一个NULL
从
应该注意的是,这个答案是基于GNU的
|
|
|
2
8
我相信你真正想知道的是stdout是否是一个终端。如果是这样,那么您可以(几乎)安全地假设它是一个交互式会话请尝试以下代码片段:
这个
编辑: 请注意,如果您将输出管道传输到其他程序,这将指示非终端stdout。在这种情况下,您可能需要一个更通用的条件,该条件还将检查标准输入(文件描述符0):
|
|
|
3
1
这是我从另一篇关于这个主题的文章中改编的一个函数。它将所有父进程与
当然,在需要之前,首先需要在没有任何参数的情况下调用函数
|
|
|
4
-1
你可以用$PPID 有点像
这将将父变量设置为父进程名,然后将其打印到屏幕上。 然后,可以根据父元的值设置一些if语句。 高温高压 |