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

时间:2013-12-20 16:44:01

标签: 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中'打破',我不知道?

注意:不幸的是,该脚本是我大学的一项任务,许多学生和老师使用这个网站,因此公开发布我的解决方案可能会产生负面影响。

1 个答案:

答案 0 :(得分:5)

你必须在没有引号的情况下调用它:

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

正如@janos所说,如果它们可能包含空格等,你可能需要围绕变量的引号:

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