且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

无法读取,这是一个while循环中从存储变量,出来的时候while循环

更新时间:2022-12-26 20:46:36

管道运营商创建一个子shell,请参阅BashPitfalls BashFAQ 。解决办法:不要使用,也没用反正

 #!/斌/庆典
postPriority = 0
而读namesInFile

    postPrioity = 500
    回声weeeeeeeeee ---> $ postPrioity< --- 1
完成< /files.txt
回声weeeeeeeeee ---> $ postPrioity< --- 2

I can't for the life of me see why I can not read the postPrioity outside the while loop. I tried "export postPrioity="500"" still didn't work.

Any ideas?

-- or in plan text --

#!/bin/bash
cat "/files.txt" | while read namesInFile; do	
			postPrioity="500"
			#This one shows the "$postPrioity" varible, as '500'
			echo "weeeeeeeeee ---> $postPrioity <--- 1"
done
			#This one comes up with "" as the $postPrioity varible. GRRR
			echo "weeeeeeeeee ---> $postPrioity <--- 2"

OUTPUT: (I only have 3 file names in files.txt)

weeeeeeeeee ---> 500 <--- 1
weeeeeeeeee ---> 500 <--- 1
weeeeeeeeee ---> 500 <--- 1
weeeeeeeeee --->  <--- 2

The pipe operator creates a subshell, see BashPitfalls and BashFAQ. Solution: Don't use cat, it's useless anyway.

#!/bin/bash
postPriority=0
while read namesInFile
do   
    postPrioity=500
    echo "weeeeeeeeee ---> $postPrioity <--- 1"
done < /files.txt
echo "weeeeeeeeee ---> $postPrioity <--- 2"