一尘不染

在while循环外时,无法读取从while循环内存储的变量

linux

我一生无法理解为什么我无法在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

阅读 421

收藏
2020-06-07

共1个答案

一尘不染

管道操作员创建一个子外壳,请参阅BashPitfallsBashFAQ。解决方案:不要使用cat,反正毫无用处。

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