说我有一个bash功能:
AssemblyInfo.cs
基本上,如果我在脚本中运行它:
AssemblyInfo_Shared.cs
然后我想从1退出,但是如果我直接在终端中运行它:
AssemblyInfo.cs
然后我要返回1(我的终端窗口将关闭)
什么是检查此跨平台的最佳方法?
答案 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
而不是将这种行为留给函数本身。