我一生无法理解为什么我无法在while循环之外阅读postPrioity。我尝试过“ export postPrioity =“ 500””仍然无法正常工作。
有任何想法吗?
-或在计划文字中-
#!/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"
输出:(我在files.txt中只有3个文件名)
weeeeeeeeee ---> 500 <--- 1 weeeeeeeeee ---> 500 <--- 1 weeeeeeeeee ---> 500 <--- 1 weeeeeeeeee ---> <--- 2
管道操作员创建一个子外壳,请参阅BashPitfalls和BashFAQ。解决方案:不要使用cat,反正毫无用处。
cat
#!/bin/bash postPriority=0 while read namesInFile do postPrioity=500 echo "weeeeeeeeee ---> $postPrioity <--- 1" done < /files.txt echo "weeeeeeeeee ---> $postPrioity <--- 2"