在Linux命令行运行脚本中的函数


介绍

BASH (Bourne Again SHell) 是一个 Unix shell 和命令语言,经常用于 Linux 和其他类 Unix 操作系统。BASH 的一个有用特性是在脚本文件中创建和使用函数。函数是完成特定任务的代码块,可以从脚本内部或命令行执行。

先决条件

在开始之前,您需要:

  • 一个带有命令行界面(或 SSH 访问权限)的 Linux 系统。

  • 包含要运行的函数的脚本(您的自定义脚本)。

  • 执行脚本所需的权限(读/写/执行)。

本教程将向您展示如何在 Linux 系统的命令行中运行 BASH 脚本中的函数。我们将首先创建一个包含函数的简单 BASH 脚本,然后演示如何从命令行调用该函数。

创建包含函数的 BASH 脚本

首先,我们将创建一个包含一个简单函数的 BASH 脚本,该函数在终端上显示一条消息。打开文本编辑器并创建一个名为“hello.sh”的新文件,其中包含以下代码:

#!/bin/bash
# Define a function called "hello"
hello() {
   echo "Hello, Earth!"
}
# Call the function
hello

保存文件并使用 **chmod** 命令使其可执行:

$ chmod +x hello.sh

现在,我们可以使用 ./ 前缀和脚本名称来运行脚本:

$ ./hello.sh
Hello, Earth!

如您所见,脚本运行并向终端打印消息“Hello, Earth!”。

从命令行执行 bash 脚本中的函数

要从命令行运行函数,我们需要使用 **bash -c** 命令,后跟脚本文件名和函数名。

例如,要从 **hello.sh** 脚本运行 hello 函数,可以使用以下命令:

$ bash -c "source hello.sh; hello"
Hello, World!

或者,我们可以使用 .(点)命令来引用脚本并调用函数

$ . hello.sh; hello
Hello, World!

从 bash 脚本执行函数时的高级操作

  • **向函数传递参数** - 您可以通过向函数传递参数来自定义函数的行为。例如,您可能想要创建一个函数,该函数以用户名作为输入并打印个性化问候。您可以使用变量(如 **$1, $2** 等)向 BASH 中的函数传递参数,这些变量分别表示传递给函数的第一个、第二个等参数。

  • **从函数返回值** - BASH 函数可以使用 return 命令返回值。例如,您可以创建一个函数来计算数字的平方并返回结果。**return** 命令后跟要返回的值,该值存储在 **$?** 变量中,可以从调用脚本或命令行访问。

  • **调试 BASH 函数** - 调试 BASH 函数可能很困难,特别是对于刚接触 BASH 脚本的人来说。调试函数的一种方法是使用 **set -x** 命令,该命令启用脚本的调试输出,并在执行每个命令之前打印该命令。您可以使用 **set +x** 命令关闭调试输出。其他工具(如 **bashdb** 或 **bashdbg**)提供了更高级的调试功能,例如断点和变量检查。

运行带有命令行参数的 Python 脚本

要在命令行中运行脚本中的函数,您需要指定脚本名称,后跟要运行的函数名称。例如,如果您有一个名为 **myscript.py** 的脚本,其中包含名为 **myFunction** 的函数,则可以像这样从命令行运行该函数:

$ python myscript.py myFunction

如果函数接受任何参数,则可以在函数名称之后传递它们,参数之间用空格分隔。例如,如果函数接受两个参数 arg1 和 arg2,则可以像这样运行它:

$ python myscript.py myFunction arg1 arg2

这是一个包含一个接受两个参数并打印其和的函数的示例脚本:

# myscript.py
def myfunction(arg1, arg2):
   print(arg1 + arg2)
myfunction(1, 2)

要从命令行运行此函数,请使用以下命令:

$ python myscript.py myFunction 1 2

输出结果为 3。

结论

本教程向您展示了如何在 Linux 系统的命令行中运行 BASH 脚本中的函数。我们首先创建了一个包含函数的简单 BASH 脚本,然后演示了如何使用 **bash -c** 和 . 命令从命令行调用该函数。如果您有任何问题或意见,请在下面的评论部分留下您的留言。

更新于:2023年1月4日

浏览量:15K+

开启你的职业生涯

完成课程获得认证

开始学习
广告