我正在尝试获取bash文件的特定功能。 请在下面找到简化的loadfun.sh: -
function a(){
echo "This is a"
}
function b(){
echo "This is b"
}
function load(){
echo "exporting $1"
export -f $1
}
$@
另外,请在下面找到执行命令序列: -
$cat loadfun.sh
function a(){
echo "This is a"
}
function b(){
echo "This is b"
}
function load(){
echo "exporting $1"
export -f $1
}
$@
$
$
$
$sh loadfun.sh a
This is a
$
$
$a
bash: a: command not found
$
$
$sh loadfun.sh load a
exporting a
$
$
$
$a
bash: a: command not found
$
我不确定为什么
export -f a
不导出功能a。
答案 0 :(得分:1)
如果您只想在获取文件时设置特定功能,那么您可以使用案例陈述
case $1 in
a)
a(){
echo "This is a"
}
;;
b)
b(){
echo "This is b"
}
;;
*)
echo error message
;;
esac
用
调用脚本. ./script [function to export]
答案 1 :(得分:0)
来源你的脚本而不是执行它,以便定义和export
发生在你当前的shell中:
source loadfun.sh a
顺便说一句,.sh
扩展名具有误导性;由于它使用仅限bash的功能,因此应将其命名为loadfun.bash
。 (对于可执行脚本,一般不赞成使用扩展,但由于这是作为库加载的,因此扩展是合适的。)