【发布时间】:2014-02-18 02:21:52
【问题描述】:
我有目录层次结构,其中“根”目录有一个名为“text.txt”的文件。我想找到这个“根”目录,然后在其中运行命令“foo”。这是我目前拥有的
# Locates the root directory
locateRoot () {
local root
#Findup looks up through the directory hierarchy. I'm sure this works.
root=$(findup text.txt 2>&/dev/null)
if [[ $? -ne 0 ]]
then
echo "Root not found"
return 1
fi
echo root
}
# Does foo from within the root directory
runFoo () {
local myDir
myDir=$(locateRoot)
pushd $myDir 1>&/dev/null
foo $@
popd 1>&/dev/null
}
但是,每当我运行这个程序时,我都会得到:
maximum nested function level reached
我所拥有的有什么问题?我很肯定 foo 按预期工作。
【问题讨论】:
-
第 11 行的“echo root”应该是“echo $root”。此外,当编写一个输出一些数据然后用 $() 捕获的函数时,将其与消息混合不是一个好主意:您应该将第 8 行的错误消息写入 stderr。
-
想简单解释一下为什么?抱歉,我对此真的很陌生。谢谢:)
-
因为在bash中,要使用变量“root”的值,需要写成$root
-
即使更改了第 11 行,它仍然无法正常工作。和以前一样的错误