击。 Shell变量逻辑

时间:2014-04-01 10:44:18

标签: linux bash shell

我有以下脚本:

ls -l | while read permissions number user user2 size month day hour filename
  do
    if [[ "$filename" == *foo* ]]
    then
      scount=`expr $scount + $size`
    fi
  done
echo $scount

脚本检查我文件夹中文件的文件名和大小,然后检查包含'foo'字样的文件,然后将其大小并添加。

我有以下问题,如果我从循环内部调用scount变量它会显示数字,但是当它在外面时它什么也没有显示,就好像变量不存在一样。它与shell会话有关吗?如何在循环外显示变量?

1 个答案:

答案 0 :(得分:1)

您的while循环在子shell中运行,因此其变量在外部不可见。试试这个:

#!/bin/bash

while read current; do
   echo "current: $current"
   last=$current
done < <(echo -e "foo\nbar\nbaz")

echo "last: $last"