Шелл-код выглядит нормально, а упрощенная текстовая версия работает должным образом:
seq 12 | paste - - - - |
while IFS=' ' read -r f1 f2 f3 f4 ; do
echo "$f1 $f2 $f3 $f4 "
done
Выход:
1 2 3 4
5 6 7 8
9 10 11 12
Поэтомуsteeldriver комментарий , вероятно, верен, и либо программа mpiexec
, либо одна из программ python
потребляют оставшиеся строки ввода, так что echo
никогда не доходит до вторая строка ввода.
В качестве примера рассмотрим приведенный выше код с добавлением еще одного голодного набора команд:
seq 12 | paste - - - - |
while IFS=' ' read -r f1 f2 f3 f4 ; do
echo "$f1 $f2 $f3 $f4 "
(read x; read x; read x;)
done
Вывод (обратите внимание на недостающие строки):
1 2 3 4
Предполагая, что у вас есть GNU sed
, следующая команда должна удалить все начальные пробелы:
sed -E 's/^\s+//' file.txt
или для POSIX -совместимых sed
вариантов
sed 's/^[[:space:]]\{1,\}//' file.txt