在bash中重用变量

时间:2012-07-17 12:35:30

标签: bash shell sed awk

我想知道重用同一组变量是否会导致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 [..]。

2 个答案:

答案 0 :(得分:4)

与变量使用无关,但您可以简化文件迭代,假设您不需要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

答案 1 :(得分:3)

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

很久以前,人们可能会认为变量重用可以节省内存;这些天,我不打扰索赔。