回答
如果脚本只定义了功能和没有别的,你可以先使用source
或.
命令当前shell的上下文中执行脚本,然后简单地调用该函数。有关更多信息,请参阅help source
。
以下命令第一寄存器中的上下文中的功能,则调用它:
. ./myScript.sh && func()
简言之,没有。
您可以使用source
(help source
了解详情)将脚本中的所有功能导入到您的环境中,然后您可以将它们调用到您的环境中。这也有执行脚本的效果,所以要小心。
没有办法从shell脚本中调用函数,就像它是共享库一样。
我认为应该给予更多的权重作为适当的答案。我试图做类似于OP所需的东西,但shell脚本根本不是为“clean-cut,OOP开发”(恕我直言)设计的。 – 2014-12-18 17:23:17
好吧,虽然其他答案是正确的 - 你当然可以做别的事情:如果你有权访问bash脚本,你可以修改它,并简单地在末尾放置特殊参数"[email protected]"
- 将扩展到您指定的命令行的参数,并且由于它是“独立的”,shell将尝试逐字地调用它们;在这里你可以指定函数名称作为第一个参数。例如:
$ cat test.sh
testA() {
echo "TEST A $1";
}
testB() {
echo "TEST B $2";
}
"[email protected]"
$ bash test.sh
$ bash test.sh testA
TEST A
$ bash test.sh testA arg1 arg2
TEST A arg1
$ bash test.sh testB arg1 arg2
TEST B arg2
波兰,你可以先验证命令存在,并且是一个函数:
# Check if the function exists (bash specific)
if declare -f "$1" > /dev/null
then
# call arguments verbatim
"[email protected]"
else
# Show a helpful error
echo "'$1' is not a known function name" >&2
exit 1
fi
大多数情况下使用'“$ @”'。在某些情况下'$ @'不安全。 – fumiyas 2015-04-10 13:21:53
编辑:警告 - 好像这并不适用于所有情况,但效果很好许多公共脚本。
如果你有所谓的“控制”一个bash脚本和里面你调用一个函数“建”:
function build() {
...
}
然后,你可以这样调用(从目录中它在哪里):
./control build
如果它的另一个文件夹内,这将使它:
another_folder/control build
如果你的文件我叫做“control.sh”,将作出相应的函数调用是这样的:
./control.sh build
我有一个情况我需要从bash脚本的功能,必须在此之前(例如执行通过source
)和@$
的问题是myScript.sh然后运行两次,似乎...所以我想出了主意,让功能不与SED:
sed -n "/^func()/,/^}/p" myScript.sh
而且在我需要时间来执行它,我把它放在一个文件,并使用source
:
sed -n "/^func()/,/^}/p" myScript.sh > func.sh; source func.sh; rm func.sh
- 1. 通过命令运行脚本
- 2. 从Windows命令行运行Python脚本,参数未通过
- 3. 如何从命令行运行脚本?
- 4. 脚本在命令运行时运行
- 5. 如何使用sudo命令通过for循环运行脚本
- 6. 如何通过shell脚本运行git命令?
- 7. 如何通过普通的Zend Framework应用程序运行命令行脚本
- 8. 如何通过命令行在服务器上运行php脚本
- 9. 通过Windows命令行运行Python脚本
- 10. 在命令行运行Shell脚本
- 11. 如何从脚本运行raco命令?
- 12. 在Ruby脚本中运行命令行命令
- 13. 通过命令行选项CSH脚本
- 14. 在python脚本中运行cmake命令
- 15. 在Expect脚本中运行Rsync命令
- 16. 在shell脚本中运行mount命令
- 17. 如何通过命令行界面运行这个curl命令
- 18. 如何在django视图中运行命令行python脚本?
- 19. 如何通过命令行将参数传递给sql脚本
- 20. Shell脚本:在shell脚本中运行“exit”命令后执行命令
- 21. 如何通过python运行adb命令?
- 22. mac os:如何在命令行上运行多行脚本?
- 23. 如何在数据库的命令行上运行postgreSQL脚本/ bash脚本
- 24. 脚本运行良好时,从命令行运行,但不通过cron
- 25. 如何通过命令行开始在eclipse中运行?
- 26. 如何在Linux中通过命令行运行Auto-Weka
- 27. 使用参数通过ssh使用python脚本的命令运行脚本
- 28. 如何通过命令行通过mysql运行单个查询?
- 29. 如何从命令行运行Powershell的特定命令/函数?
- 30. Bash脚本并在命令行上手动运行命令
此方法的唯一问题是,如果在函数中使用'exit',它将在执行函数后关闭终端。有没有办法解决? @SvenMarnach – user1527227 2014-09-02 23:01:42
@ user1527227:在这种情况下,请与下一个答案一起去,因为您已经掌握了shell脚本。如果你不这样做,你可以先调用一个交互式子shell(只需输入'bash'),'exit'只会终止子shell,而不是终端。 – 2014-09-03 10:09:27