1

我尝试了 3 个互联网示例来编写一个 bashe shell 函数并通过我的 xterm 终端调用它,但没有成功。

1-我的函数保存在一个文件“example”中,这个文件是不可执行的模式。

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

 #!/bin/bash 
           function quit {
               exit
           }
           function hello {
               echo Hello!
           }

3-在 xterm 终端中,在该文件所在的文件夹中,我以下列方式调用这两个函数:

$./quit     $./hello    

并以这种方式:

$quit     $hello

它们都不起作用。但是如果我将以下函数更改为脚本(没有函数字)并调用文件,它就可以工作。

任何想法,发生了什么?

谢谢

4

4 回答 4

3

您需要获取脚本以将函数定义加载到当前 shell 环境:

# source script
. example

# call function
hello

# call function
quit
于 2013-07-31T10:28:55.960 回答
1

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

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

让我们消除与./and$运算符的混淆。

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

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

pi=3.14
echo $pi
3.14

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

于 2013-07-31T10:28:07.460 回答
1

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

. example
quit
hello

你也可以这样做source example

于 2013-07-31T10:29:07.093 回答
0

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

于 2013-07-31T10:30:43.727 回答