Другая проблема может быть неудачной apt-get update. После удаления неправильных источников и запуска apt-get update, я получил свой автозаполненный файл.
Замена процесса может помешать созданию раздражающих подоболочек, но синтаксис немного странный:
$ k=0; for x in a b; do ((k++)); done | zenity --progress; echo "$k"
→ 0 (не в порядке)
$ k=0; for x in a b; do ((k++)); done > >(zenity --progress); echo "$k"
→ 2 ( OK)
Что мне нравится в этом, так это то, что вам вообще не нужно сильно изменять свой скрипт, чтобы он работал правильно. Однако некоторые экзотические оболочки могут не хватать этой функции. Для Bash проверьте раздел «Замена процесса» в руководстве.
С кодом, близким к примеру из начального вопроса:
i=0
p=0
while [ $i -lt 10 ]
do
i=$[$i + 1]
echo $((10 * i))
sleep 0.1
p=$[$p + 1]
done > >(zenity --progress --title="test" --text="test")
echo "i: $i p: $p"
(Я добавил сон к сделайте прогресс более заметным, и я эхо десять раз i, чтобы иметь 100 при достижении конца цикла.)