【发布时间】:2015-03-24 17:57:41
【问题描述】:
做事
#!/bin/sh
myexe
myexe
if sys.stdout.isatty():
print 'from a script'
else:
print 'not from a script'
输出(如果我从终端执行 doa):
not from a script
输出(如果我从终端执行 myexe):
not from a script
如果从 doa 执行,我希望它说 'from a script'
问题:myexe 是否有可能知道它是从 bash 脚本执行的?
【问题讨论】:
-
我不知道一种方法来检测文件是否是从脚本调用的(理论上,它总是由脚本调用,无论是批处理脚本,命令行,你的鼠标双击它)。您可以改为从脚本中传递一个参数以使用
sys.argv[index]检测并告诉它从哪里调用它。 -
一个 bash 脚本,而不是什么?你的
sh脚本?交互式外壳?什么时候重要? -
查看 stdout 是否是 TTY 是一种常见的、明智的检查,因为它可以让您决定是以人类可读的格式还是计算机可读的格式输出(例如,连接到 TTY 时的彩色输出,纯当管道传输到另一个进程时输出)。但是检查你的程序是如何被调用的......根据父进程的身份你会做些什么不同的事情——以及为什么?
-
从您的终端与从脚本调用
-
我很确定答案是否定的。你真正想解决什么问题?