为什么在Unix中读取文件时flag的值不会改变

时间:2014-01-24 15:31:49

标签: shell unix

我试图读取一个文件,每当我在该文件中得到"true"时,我正在切换该标志,但它无效。在while循环中,我得到了更改的值,但是一旦它离开循环,就会显示初始值。以下是脚本代码:

echo "file:"
read filename
flag=0

while read line
do
if [ $line = true ]
then
        flag=1
        echo "Inside loop :$flag"
        break
fi
done < $filename
echo "Outside loop :$flag"
if test $flag -eq 1
then echo "success"
else
echo "doesnotexit"
fi

为什么flag的值不会改变?

输入文件 - “f1.txt”包含:

hi  
true  
go  
false  

节目输出:

+ echo file:  
file:  
+ read filename  
f1.txt  
flag=0  
+ read line  
+ [ hi = true ]  
+ read line  
+ [ true = true ]  
flag=1  
+ echo Inside loop :1  
Inside loop :1  
+ break  
+ echo Outside loop :0  
Outside loop :0  
+ test 0 -eq 1  
+ echo doesnotexit  
doesnotexit    

1 个答案:

答案 0 :(得分:0)

当我通过“bash”执行它时,上面的脚本成功运行。

使用bash有一些优点。它的特点使编程更方便,类似于其他现代编程语言的编程。这些包括范围局部变量和数组。简单的“sh”是一种非常简约的编程语言。