find
возвращает ноль, если не находит файлов. grep
возвращает 1, но никогда не получает никаких имен файлов, потому что он заключен в xargs
, который снова возвращает 0 для пустого ввода. Если вы хотите проверить, существуют ли файлы, вы можете использовать массивы:
shopt -s nullglob
files=(arq_*.txt)
if [[ "${#files[@]}" -eq 0 ]]
then
[handle non-existing files]
fi
for file in "${files[@]}"
do
if grep 00819047 "$file"
then
cp "$file" $HOME/aka
fi
done
или переменная защиты:
found=0
for file in arg_*.txt
do
found=1
[loop contents like above]
done
if [[ "$found" -eq 0 ]]
then
[handle non-existing files]
fi
У вас также есть орфографическая ошибка PIPWSTATUS
. Но в любом случае ${PIPESTATUS[@]}"
- это все, что вам нужно напечатать, чтобы получить полное содержимое этого массива.