Bash:调用函数时没有返回值

标签 bash

我是 stackoverflow 和 bash 脚本编写的新手,所以请对我宽容一些!我一直在努力编写我一直在编写的 bash 脚本:当我尝试从我的脚本中调用函数“main”时,如下所示:

variable=$("main -t $path/$i")

我收到错误“main -t ./folder:没有这样的文件或目录”;有什么想法吗?

提前致谢!

编辑:谢谢 Jkbkot,我现在这样调用它:

variable=$(main -t "$path/$i")

原始错误已排序,但仍有问题:“变量”似乎没有被分配函数中回显的值,尽管手动调用函数会打印正确的值。为什么会发生这种情况?

编辑:看来我正在正确地调用和回显,但是当调用“main”时,递归调用到初始调用时它的行为似乎有所不同。例如,它可以正常运行:

variable=$(main -t "$path/$i") #A line within 'main'

然后如预期的那样再次开始,但是这次它一遇到“中断”就停止,显然是打破了整个函数调用,而不仅仅是它当前所处的“情况”。是否有一些怪癖我不知道 bash 中的“中断”?

注意:不幸的是,该脚本是我所在大学的作业,许多学生和老师都使用该网站,因此公开发布我的解决方案可能会产生负面后果。

最佳答案

您必须在不带引号的情况下调用它:

variable=$(main -t $path/$i)

正如@janos所说,您可能需要在变量周围加上引号,以防它们可能包含空格等:

variable=$(main -t "$path/$i")

关于Bash:调用函数时没有返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20708199/

相关文章:

bash - 通过 ssh 运行 Bash 脚本

linux - 如何使用bash脚本将最新文件从本地计算机复制到服务器?

mysql - MySQL如何生成MD5加密密码?

bash - bash 中的 shell 函数是以 shell 上下文还是 fork-n-exec 方式执行的?

linux - 如何删除单词前的文字?

bash - 如何获取wget下载的文件的文件名

BASH shell 参数(间接)扩展

linux - 具有作业控制的 Bash 进程替换后台

bash - 使用 tee 时如何输入到标准输入

linux - 如何制作非交互式 shell 脚本