bash函数-确定是作为脚本还是tty运行

时间:2019-06-09 04:51:51

标签: bash shell terminal

说我有一个bash功能:

AssemblyInfo.cs

基本上,如果我在脚本中运行它:

AssemblyInfo_Shared.cs

然后我想从1退出,但是如果我直接在终端中运行它:

AssemblyInfo.cs

然后我要返回1(我的终端窗口将关闭)

什么是检查此跨平台的最佳方法?

2 个答案:

答案 0 :(得分:1)

您可以使用$0

echo $0在我的(bash)终端中运行时返回-bash

echo $0在没有#!运行的bash test.sh脚本中返回test.sh

echo $0#!/bin/bash中运行的脚本中,./test.sh返回./test.sh

答案 1 :(得分:0)

这不是防弹的,但是您可以检查当前外壳是否是交互式的:

is_in_script() {
  [[ $- == *i* ]]
}

但是,我只是将run_stuff始终设为return,如果脚本在命令报告失败时退出,那么脚本可以执行run_stuff || exit而不是将这种行为留给函数本身。