变量在shell中不受影响

时间:2014-05-19 14:25:10

标签: shell

ls -l ${1}/${2}/${i}*| awk '{  print  $5 " " $6 " " $7 " " $8 " " $9}' | ( while read Taille Mois Jour HeureOuAnnee Fichier

         do
            DateFichierEntreHierAujourdhui $Mois $Jour $HeureOuAnnee
            if [ $? -eq 0 ]
            then
                  NbFicREcu_links=`expr ${NbFicREcu_links} + 1`
            fi                
         done

         if [ $NbFicREcu_links -eq 0 ]
         then
            echo 'i am here 1'
            echo ${i}
            INT14_KO_FR=1
         else   
            echo 'i am here 2'
         fi
         )       
         fi
echo "1- in the end of the fonction INT14_KO_FR=${INT14_KO_FR}"

这段代码检测是否缺少特定文件。事实上,当我们进入打印'我在这里1'的区块时,我想做INT14_KO_FR = 1。但是当我退出这个循环时,INT14_KO_FR始终为0,即初始值。代码输入'我在这里1'2次。这真的很奇怪,谢谢你们的帮助

1 个答案:

答案 0 :(得分:0)

管道在subshell中运行,因此任何variables set inside it are not in scope for the outside code。这里提到了不同的解决方法,具体取决于您熟悉的语言功能以及是否需要与POSIX兼容。