bash:调用带变量的函数与带参数的函数

时间:2014-02-26 15:13:42

标签: bash function

让我们举例说明下一个函数:

版本1 - 带变量:

 backup () {
 for arname in `arname_f`
 do
   slapcat -b "$setnames" -l "$bkdir"/"$ardate"_"$arname".ldif || exit 1
 done
 }

并使用代码运行它:

 backup;

版本2 - 带位置参数:

 backup () {
 for arname in `arname_f`
 do
   slapcat -b "$1" -l "$2"/"$3"_"$4".ldif || exit 1
 done
 }

让我们运行这样的代码:

 backup $setnames $bkdir $ardate $arname;

这种偏见有什么不同吗?

1 个答案:

答案 0 :(得分:2)

这个问题与Bash无关。

#1是大多数专业人士讨厌的“Spaghetti”编码风格(全局变量)的例子。当有人在某处改变参数并且函数开始行为不端时,它最终会导致一个重大问题,而且你不会知道谁/什么改变了什么地方。

#2接近我的行为方式。虽然,原因很可能是有理由选择#1,但这取决于。