我有以下脚本:
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会话有关吗?如何在循环外显示变量?
答案 0 :(得分:1)
您的while
循环在子shell中运行,因此其变量在外部不可见。试试这个:
#!/bin/bash
while read current; do
echo "current: $current"
last=$current
done < <(echo -e "foo\nbar\nbaz")
echo "last: $last"