3

我想知道重复使用同一组变量是否会导致 bash 脚本中出现任何不可预见的事件。这通常被认为是一种好习惯吗?

为了让我的查询更清楚一点。

我有一个这样的脚本:

max=`cat loc1.c  | wc -l`   
bar=1        

while [ $bar -lt $max ]
do

    f1=`awk -v vr1=$bar 'NR == vr1' loc1.c`
    f2=`awk -v vr1=$bar 'NR == vr1' loc2.c`

    if [[ a random file  exists ]] ; then # use var1 var2 var3 ; fi 
    if [[ a random file2 exists ]] ; then # use var1 var2 var3 ; fi 
    if [[ a random file3 exists ]] ; then # use var1 var2 var3 ; fi 

    ((bar++))
done

文件 loc1 和 loc2 列出了由换行符分隔的文件路径。路径相对于行号转移到变量 f1 和 f2 。循环继续,直到 loc1 中的每个文件(由路径指向)都对 loc2 中指向的文件进行了某种数据操作。

欢迎提出任何建议。

我在下面的代码中重用了变量 var1,var2 ,var3 [..]。

4

2 回答 2

5

与变量使用无关,但您可以简化文件迭代,假设您不需要barmax其他任何东西:

while read -r f1 && read -r -u 3 f2; do
    if [[ a random file  exists ]] ; then # use var1 var2 var3 ; fi 
    if [[ a random file2 exists ]] ; then # use var1 var2 var3 ; fi 
    if [[ a random file3 exists ]] ; then # use var1 var2 var3 ; fi
done < loc1.c 3< loc2.c
于 2012-07-17T13:02:54.817 回答
3

重用变量的唯一问题是它们是否在脚本中使用它们的每个点都进行了适当的初始化。如果每个段落在使用之前总是设置值,那么重用就没有坏处。主要准则应该是代码的清晰性。如果代码清晰,那么就没有问题。

很久以前,有人可能会争辩说变量重用节省了内存。这些天来,我不会理会索赔。

于 2012-07-17T12:44:13.263 回答