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