我试图读取一个文件,每当我在该文件中得到"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
答案 0 :(得分:0)
当我通过“bash”执行它时,上面的脚本成功运行。
使用bash有一些优点。它的特点使编程更方便,类似于其他现代编程语言的编程。这些包括范围局部变量和数组。简单的“sh”是一种非常简约的编程语言。