Вариант 1: не передаем команду:
root@goro:~# seq 101 111 | while read i ; do vzctl exec $i ; done
No command line given for exec
No command line given for exec
*** etc ***
цикл выполняется.
Вариант 2: пробуем что-то, кроме exec:
root@goro:~# seq 101 111 | while read i ; do vzctl status $i ; done
CTID 101 exist mounted running
CTID 102 exist mounted running
CTID 103 exist mounted running
*** etc ***
цикл выполняется.
Вариант 3: пробуем for:
root@goro:~# for i in `seq 101 111` ; do vzctl exec $i id ; done
uid=0(root) gid=0(root) groups=0(root)
uid=0(root) gid=0(root) groups=0(root)
uid=0(root) gid=0(root) groups=0(root)
*** etc ***
Цикл выполняется.
А теперь, собственно, вопрос:
root@goro:~# seq 101 111 | while read i ; do vzctl exec $i id ; done
uid=0(root) gid=0(root) groups=0(root)
root@goro:~#
root@goro:~# seq 101 111 | while read i ; do vzctl exec $i id && echo blah $HOSTNAME ; done
uid=0(root) gid=0(root) groups=0(root)
blah goro
root@goro:~#
команды после vzctl выполняются, т.е., он завершается успешно и не break'ает цикл.
А, да, Debian Squeeze