更新时间: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"