Type()
{
if [ -d $1 ]
then
return 1
elif [ -e $1 ]
then
return 2
else
return 0
fi
}
Types()
{
local arg1 arg2
for arg1 in $@
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 = $(类型$ arg1)”bur它似乎不起作用。请问正确的语法是什么?
答案 0 :(得分: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-Scripting Guide 的Complex Functions and Function Complexities部分,了解此方法的示例。
答案 1 :(得分:1)
如果您想将此功能与$(Type ...)
一起使用,则可以将return ...
语句更改为echo ...
(不是exec echo ...
,而其他功能也是如此)。如果您想将return ...
语句保留在Type()
中,则需要执行Type ...; arg2=$?
之类的操作来测试Type()
的返回代码。