让我们以下一个函数为例:
版本 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;
这种倾斜有什么区别吗?
这个问题与
Bash
本身无关。
#1 是大多数专业人士和理智的人讨厌的"意大利面"编码风格(全局变量)的例子。当某个地方有人更改参数并且函数开始行为不端时,它最终会导致一个重大问题,并且您将不知道谁/什么在哪里更改了什么。
#2 接近我的做法。虽然,出于原因,很可能有一个正当的理由来选择#1,这取决于。