LINUX.ORG.RU

История изменений

Исправление zaz, (текущая версия) :

цикл выполняется в саб шелле?

Не совсем, но у тебя в строчке есть конвеер/пайпа <|> а это в свою очередь форкает твой скрипт, тоесть то что слева от | это один процесс, то что справа - другой. Убери пайпу и замени while read на простой foreach, както так:

#!/bin/bash

OIFS="${IFS}"
NIFS="
"
IFS="${NIFS}"
files=`find /usr/share -type f -a -size +4000c -a -size -4002c`
for file in ${files}; do
        IFS="${OIFS}"

        echo "FILE [${file}]"
        (( c = c + 1 ))

        IFS="${NIFS}"
done

echo -e "\n$c"
в принциве с IFS можно не заморачиватся если нет файлов с прабелами, или внутри цикла сплитить ничего не нужно ...

Второй вариант это скинуть результат find во временный файл и потом его прочитать построчно но уже без пайпы ...

Исходная версия zaz, :

цикл выполняется в саб шелле?

Не совсем, но у тебя в строчке есть конвеер/пайпа <|> а это в свою очередь форкает твой скрипт, тоесть то что слева от | это один процесс, то что справа - другой. Убери пайпу и замени while read на простой foreach, както так:

#!/bin/bash

OIFS="${IFS}"
NIFS="
"
IFS="${NIFS}"
files=`find /usr/share -type f -a -size +4000c -a -size -4002c`
for file in ${files}; do
        IFS="${OIFS}"

        echo "FILE [${file}]"
        (( c = c + 1 ))

        IFS="${NIFS}"
done

echo -e "\n$c"
в принциве с IFS можно не заморачиватся если нет файлов с прабелами, или внутри цикла сплитить ничего не нужно ...