2011-09-21 109 views
0
Type() 
{ 
    if [ -d $1 ] 
     then 
      return 1 
    elif [ -e $1 ] 
     then 
      return 2 
    else 
      return 0 
    fi 
} 

Types() 
{ 
    local arg1 arg2 
    for arg1 in [email protected] 
     do 
      arg2=$(Type $arg1) 
      if [ arg2 -eq 1 ] 
       then 
        echo "$arg1 est un répertoire." 
      elif [ arg2 -eq 2 ] 
       then 
        echo "$arg1 n est pas un répertoire." 
      else 
        echo "$arg1 ne correspond à aucune entrée du répertoire." 
      fi 
    done 
} 

我不知道如何在'Types'中使用函数'Type'。我试过“arg2 = $(Type $ arg1)”bur它似乎不工作。请问什么是正确的语法?在shell中使用另一个函数中的函数

回答

1

如果要使用$(Type ...)的功能,则可以将return ...语句更改为echo ...(而不是exec echo ...,该功能会执行其他操作)。如果你想保留return ...陈述在Type(),那么你需要做一些类似Type ...; arg2=$?的测试来自Type()的返回码。

+0

谢谢!有效 ! – pihug12

1
return 1 

Bash函数通常通过标准输出返回值。例如,你可以使用这样的事情,而不是:

exec echo 1 # sends 1 to the standard output and then ends the function 

或者,你可以在0到255之间返回一个整数退出代码(如你正在尝试做的)。如果你选择这样做,你需要这样做:

Type $arg1 
arg2=$?  # obtains exit code of last command/function executed 

但是,如果你需要返回一个数组,你必须使用一个全局变量。有关此方法的示例,可能需要参考高级Bash脚本指南的​​部分。

+0

谢谢!我使用了最后一个选项。 – pihug12

相关问题