我的第一个bash shell函数没有';行不通

我的第一个bash shell函数没有';行不通,bash,Bash,我尝试了3个internet示例来编写bashshell函数,并通过我的xterm终端调用它,但没有成功 1-my函数保存在“示例”文件中,该文件为不可执行模式 2-在这个示例文件中,我写道: #!/bin/bash function quit { exit } function hello { echo Hello! } 3-在xterm终端

我尝试了3个internet示例来编写bashshell函数,并通过我的xterm终端调用它,但没有成功

1-my函数保存在“示例”文件中,该文件为不可执行模式

2-在这个示例文件中,我写道:

 #!/bin/bash 
           function quit {
               exit
           }
           function hello {
               echo Hello!
           }
3-在xterm终端中,在该文件所在的文件夹中,我通过以下方式调用了这两个函数:

$./quit     $./hello    
通过这种方式:

$quit     $hello
但是如果我将下面的函数更改为脚本(没有函数词)并调用该文件,它就会工作

你知道怎么回事吗


谢谢

一旦编写了函数,它们只在脚本文件本身中可见。为了使它们在外部可见,您需要告诉脚本将函数导出到环境中

尝试在函数定义之后添加
export-f quit
export-f hello

让我们澄清一下与
/
$
运算符的混淆

要调用当前目录中的脚本时,将使用第一个运算符
/
。例如,如果您在某个文件
script.sh
中定义了脚本,则可以使用
/script.sh
调用它(确保您具有执行权限-可以使用
chmod+x script.sh
添加它们)

第二个运算符
$
用于查看环境变量。这些是在bashshell中默认定义的变量,或者是您定义并导出到shell中的变量。尝试在shell中输入以下内容

pi=3.14
echo $pi
3.14

在这里,
$
前缀允许您访问您创建的变量。

编写函数后,它们仅在脚本文件本身中可见。为了使它们在外部可见,您需要告诉脚本将函数导出到环境中

尝试在函数定义之后添加
export-f quit
export-f hello

让我们澄清一下与
/
$
运算符的混淆

要调用当前目录中的脚本时,将使用第一个运算符
/
。例如,如果您在某个文件
script.sh
中定义了脚本,则可以使用
/script.sh
调用它(确保您具有执行权限-可以使用
chmod+x script.sh
添加它们)

第二个运算符
$
用于查看环境变量。这些是在bashshell中默认定义的变量,或者是您定义并导出到shell中的变量。尝试在shell中输入以下内容

pi=3.14
echo $pi
3.14

在这里,
$
前缀允许您访问您创建的变量。

您需要为脚本提供源代码,以便将函数定义加载到当前shell环境:

# source script
. example

# call function
hello

# call function
quit

要将函数定义加载到当前shell环境,您需要为脚本提供源代码:

# source script
. example

# call function
hello

# call function
quit

您需要使函数定义可供外部shell使用。为此,您需要获取示例文件的源代码:

. example
quit
hello

您还可以执行
源示例

您需要使函数定义可供外部shell使用。为此,您需要获取示例文件的源代码:

. example
quit
hello

您还可以执行
源代码示例

/quit或./hello意味着您有名为quit和hello的文件,并且希望执行它们。 $quit和$hello表示quit和hello是预定义的命令(在$PATH文件夹中的可执行文件,例如/usr/bin)
在shell文件中定义函数时,也应该在该文件中使用它

/quit或./hello表示您有名为quit和hello的文件,并且希望执行它们。 $quit和$hello表示quit和hello是预定义的命令(在$PATH文件夹中的可执行文件,例如/usr/bin) 在shell文件中定义函数时,也应该在该文件中使用它