如何调用 bash 函数

如何调用 bash 函数

也许我的看法是错误的。但这就是我想做的事情。我的大部分工作都是用 Java 完成的,但刚刚切换到 unix (bash) 环境。我正在这样做:

[~/Desktop/bashPlay]% cat myFunc
#!/bin/bash

ls2(){
        echo "Hello World"
}

ls3(){
        echo "Testing"
}

echo "this is a test"   
ls2 # this calls a function

[~/Desktop/bashPlay]% myFunc
this is a test
Hello World

但是我的文件中有两个函数,我希望能够从命令行单独调用它们。即:myFunc.ls2()或者甚至只是ls2。我知道我可以将函数添加到我的.bashrc文件中,但是有没有其他方法可以执行这些函数而不将它们添加到我的文件中.bashrc

答案1

执行此操作的一种方法是使用命令,但需要输入更多内容source。要从 myFunc 调用函数,您可以使用它source myFunc; ls2,它会输出 Hello World。

例如,我有一个名为say.sh

#!/bin/bash

function talk()
{
        echo "hi!"
}

现在我想talk()从命令行调用它的功能:

[john@awesome ~]$ 源 say.sh;讨论
你好!

从另一个 bash 脚本调用它:

#!/bin/bash
source say.sh
talk

您还可以将每个脚本放在单独的脚本中,然后将它们添加到 PATH 变量中的目录中。

例如,在一个名为的脚本中,hello您将拥有:

#!/bin/bash
echo "Hello World"

现在将它放在 PATH 中的一个目录中,您可以通过运行 查看echo $PATH。您可以根据需要将另一个目录添加到 PATH 中,或者使用现有目录。将文件复制到那里后,使用 使其可执行chmod +x filename

答案2

如果您和我一样,您不想让函数弄乱您的环境。您还有一组函数,它们在功能上属于同一组,因此将它们放在同一个脚本文件中是有意义的。(我知道包含多个文件的文件夹可以达到同样的目的)。以下是一个可能的解决方案,它允许您在脚本中调用特定函数:

$ cat functions.sh    
#!/bin/bash

ls2() {
        echo "Hello World"
}

ls3() {
        echo "Testing $*"
}

# the next line calls the function passed as the first parameter to the script.
# the remaining script arguments can be passed to this function.

$1 $2 $3 $4 $5 

$ ./functions.sh ls2    
Hello World   
$ ./functions.sh ls3    
Testing     
$ ./functions.sh ls3 first_arg    
Testing first_arg    
$

答案3

另一种方法是创建一个名为functions.sh~/bin例如在目录中)的脚本。

在此脚本中,您可以添加所有个人函数定义(假设每次添加函数时,您都会将其添加到此文件中...)

最后,您只需将这source ~/bin/functions.sh一行添加到您的.bashrc文件中。这样,您就可以从命令行调用它们,您的文件.bashrc将保持干净,并且您将有一个特定的地方来存放您的个人函数。

答案4

点运算符或source内置运算符bash类似于importJava 中的语句。

您可以阅读更多关于点运算符或者source内置

相关内容