在bash脚本中,如何运行外部定义的bash函数?

时间:2011-08-03 00:34:05

标签: bash

例如,以下命令不起作用。我想知道如何解决它,谢谢。

[liuke@liuke-mbp ~]$ function showxx() { echo xx; }
[liuke@liuke-mbp ~]$ showxx
xx
[liuke@liuke-mbp ~]$ cat a.bash 
#!/bin/bash
showxx
[liuke@liuke-mbp ~]$ ./a.bash 
./a.bash: line 2: showxx: command not found

3 个答案:

答案 0 :(得分:6)

您需要导出您的功能。您可以使用set -a导出所有内容(我的偏好),也可以使用export -f showxx单独导出这些功能。要么将它放入环境中,子弹就可以拾起它们。

答案 1 :(得分:3)

您必须定义要在本地流程的“范围”中显示的函数。

当您在命令行中输入一个函数时,它现在“生活”在终端shell的bash副本中。

当您启动脚本时,只有标有export的变量才会显示在bash的新副本中作为终端的子运行。 (我们现在不会进入export; - )。

要在脚本中获取该函数,必须在脚本中定义它。

cat a.bash
#!/bin/bash
function showxx() { echo xx; }
showxx

或者你可以把这个函数放在一个单独的文件中并'source'它(用'。'),就好像它在文件中一样,即

 cat    showxx.bfn
 function showxx() { echo xx; }

 cat a.bash
 . showxx.bfn
 showxx

扩展名.bfn只是我用来帮助记录文件内部的内容,比如bfn ='bash function'。

'。'是源命令。

我希望这会有所帮助。

P.S。因为您似乎是新用户,如果您得到的答案可以帮助您,请记住将其标记为已接受,并且/或者给它一个+(或 - )作为有用的答案。

答案 2 :(得分:1)

使用前面的点和空格调用脚本。

. a.bash