Porque você usou um pipe ( |
) e comandos em torno do pipe são executados em subshells.
Assim, o valor da variável var
é alterado (incrementado) no subshell relevante e sai do escopo à medida que o subshell sai, portanto, ele não terá impacto no valor do shell pai, portanto, o shell pai ainda terá o valor 34.
Para resolver isso, você pode usar a substituição de processo para executar find
:
var=34
while read line; do
file_status='file "$line"'
file_name='echo $line | sed s/".*\/"//g'
line_length=${#file_name}
if [ $line_length -gt $n ]; then
echo "hi there"
var=$((var+1))
fi
done < <(find $1 -type f)
echo $var