我是 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/