Я пытаюсь реализовать механизм повтора при выполнении внешней программы с использованием TCL. У меня возникают некоторые проблемы при попытке подачи STDIN во внешнюю программу. Теперь я работаю с упрощенным примером, пытаясь решить проблему. Возьмем следующий питон скрипт (simple.py):TCL - питание STDIN для exec
x = raw_input()
y = raw_input()
print x + y
Входы 2 строки с выхода будет конкатенация результат строк.
Теперь следующая команда работает от интерпретатора TCL:
% exec python stuff.py << 1\n2
12
Однако, когда я пытаюсь разделить его на отдельные команды, или добавить их в строку, прежде чем делать это, не удается.
Сбой 1:
% set cmd "python simple.py << 1\n2"
% exec $cmd
couldn't execute "python simple.py << 1
2": no such file or directory
Сбой 2:
% set cmd1 "python simple.py"
% set cmd2 "1\n2"
% exec $cmd1 << $cmd2
не смог выполнить "питон simple.py": нет такого файла или каталога
Сбой 3:
% set fullCommandString "exec python simple.py << 1\n2"
% eval $fullCommandString
Traceback (most recent call last):
File "simple.py", line 2, in <module>
y = raw_input()
EOFError: EOF when reading a line
Третий случай кажется который запускает скрипт, но он интерпретирует обе строки STDIN как одну.
Любая помощь приветствуется.