bash脚本:如何;退出“;从源代码脚本,并允许非源代码工作?

bash脚本:如何;退出“;从源代码脚本,并允许非源代码工作?,bash,Bash,我有一个脚本,我想让人们来源代码,但也可以这样选择。因此,他们可以使用或不使用采购,这取决于他们 e、 g.以下两项都应起作用: $。test.sh $test.sh 问题是,如果没有传入正确的参数,test.sh包含exit语句。如果有人编写脚本,则exit命令将退出终端 我做了一些研究,发现我可以检测到它是否正在被采购,并做一些不同的事情,但那会有什么不同呢?可能有更好的方法来做到这一点,但下面是一个示例脚本,展示了我是如何做到这一点的: bparks@home $ set | grep

我有一个脚本,我想让人们来源代码,但也可以这样选择。因此,他们可以使用或不使用采购,这取决于他们

e、 g.以下两项都应起作用:

$。test.sh
$test.sh

问题是,如果没有传入正确的参数,
test.sh
包含
exit
语句。如果有人编写脚本,则
exit
命令将退出终端


我做了一些研究,发现我可以检测到它是否正在被采购,并做一些不同的事情,但那会有什么不同呢?

可能有更好的方法来做到这一点,但下面是一个示例脚本,展示了我是如何做到这一点的:

bparks@home 
$ set | grep TESTVAR

bparks@home 
$ ./test.sh

  Outputs some useful information to the console. Please pass one arg.

bparks@home 
$ set | grep TESTVAR

bparks@home 
$ . ./test.sh

  Outputs some useful information to the console. Please pass one arg.

bparks@home 
$ set | grep TESTVAR

bparks@home 
$ ./test.sh asdf
export TESTVAR=me

bparks@home 
$ set | grep TESTVAR

bparks@home 
$ . ./test.sh asdf

bparks@home 
$ set | grep TESTVAR
TESTVAR=me

bparks@home 
$
test.sh
#/usr/bin/env bash
#存储我们是否来源于变量中
(返回0 2>/dev/null)&&sourceed=1 | | sourceed=0
exitIfNotSourced(){
[[“$sourceed”!=“0”]| |退出;
}
showHelp(){

IT=$(cat从源代码脚本退出的正常方式是在任何函数之外返回
(可选地添加所需的退出代码)。假设作为命令运行时设置了
-e
标志,这也将从shell程序退出:

#!/bin/sh -eu

if [ $# = 0 ]
then
    echo "Usage $0 <argument>" >&2 
    return 1
fi
!/bin/sh-eu
如果[$#=0]
然后
回显“使用率$0”>&2
返回1
fi

如果我们在没有
-e
的情况下运行,我们可能可以
返回| |退出

感谢反馈-是的,我希望它是源代码的,而不是源代码的-你能展示一个双向工作的示例吗?我尝试过,它就像你给出的示例一样工作-但我想我的用例是我喜欢有可以n
随时退出
——这种方法似乎不会让这种情况发生?
#!/bin/sh -eu

if [ $# = 0 ]
then
    echo "Usage $0 <argument>" >&2 
    return 1
fi