让我们举例说明下一个函数:
版本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;
这种偏见有什么不同吗?
答案 0 :(得分:2)
这个问题与Bash
无关。
#1是大多数专业人士讨厌的“Spaghetti”编码风格(全局变量)的例子。当有人在某处改变参数并且函数开始行为不端时,它最终会导致一个重大问题,而且你不会知道谁/什么改变了什么地方。
#2接近我的行为方式。虽然,原因很可能是有理由选择#1,但这取决于。