Ошибка заключается в том, что вы перенаправляете все выходные данные в $ logfile
, поэтому нет вывода для YAD
для обработки. Инструмент, который вы ищете - это :
:
NAME
tee - read from standard input and write to standard output and files
SYNOPSIS
tee [OPTION]... [FILE]...
DESCRIPTION
Copy standard input to each FILE, and also to standard output.
Итак, вы можете сделать:
apt-get update 2>&1 | tee -a ${logfile} |
yad --width=400 --height=300 \
--title="Updating debian package list ..." --progress \
--pulsate --text="Updating debian package list ..." \
--auto-kill --auto-close \
--percentage=10
for f in *.csv; do
IFS= read -r line < "$f" &&
case $line in (*HEADER*) continue; esac
printf >&2 'ERROR: Missing HEADER record for "%s"\n' "$f"
mv -- "$f" "${f%.*}.head"
done
Попробуйте:
for _file in *.csv
do
if ! grep -q 'HEADER' <(head -n 1 -- "$_file")
then
echo >&2 "ERROR: Missing HEADER record for $_file"
# mv -- "$_file" "${_file%.*}.head"
echo "$_file" "${_file%.*}.head"
fi
done
Используя echo
строку, чтобы проверить, работает ли она правильно, если все в порядке, попробуйте mv
строку.