达到最大嵌套功能级别

时间:2014-02-18 02:21:53

标签: bash zsh

我有目录层次结构,其中“root”目录有一个名为“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按预期工作。

1 个答案:

答案 0 :(得分:0)

locateRoot函数中你只echo只有root不是它的内容,这是错误的,你的脚本似乎很冗长,无法执行一些简单的任务。我给你的示例脚本哪个打印路径指向包含text.txt文件的目录。

#! /bin/bash
locateRoot () 
{
    var=$(find / -iname "text.txt" -printf '%h\n' | sort -u)
    printf "%s \n" "$var"
}

您可以看到包含该文件的该目录的绝对路径。您可以修改上面的脚本,只需cd到该目录就可以执行某个任务,如

cd $var
//execute your command in $var directory