从嵌入式python代码获取输入时出错

时间:2018-04-17 09:38:48

标签: python linux bash python-2.6

我有一个bash脚本调用python2.6来读取输入,但我遇到了一个错误。 下面是脚本。我正在从终端

运行bash脚本
a=1
b=2
python2.6 <<"EOF"
a=int(input('Enter num 1'))
b=int(input('Enter num 2'))
ptint('a=%d ' % a)
print('b=%d ' % b)
EOF

c=$((a + b))
echo "$c"



Enter num 1Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
EOFError: EOF when reading a line
3

1 个答案:

答案 0 :(得分:0)

Enter num 1Traceback (most recent call last):

您通过stdin传递了脚本,并且还希望您的用户输入stdininput提出它,因为它什么都没有。在任何情况下,您都可以使用不同的构造(如进程替换)来“嵌入”该python代码。 E.g:

...
python2 <(cat <<"EOF"
a=int(input('Enter num 1'))
b=int(input('Enter num 2'))
print('a=%d ' % a)
print('b=%d ' % b)
EOF
)
...

这不会失败,但很可能没有做我认为你想做的事情。获取打印件并使用它们重新定义bash变量的值。

为此,如果$(...)用于命令替换,则必须将整个python调用包装在另一对中。但是,这也会吞噬你的输入提示(使它们看不见并混淆掉外壳)。我不认为input让你使用stderr提示来解决这个问题。 (它还有另一个问题就是在输入上执行eval,这可能会让你暴露在一系列其他问题中,并且在这种情况下可能不是你想要使用的函数。)

我不完全确定这个剧本的发展方向,但我希望这能让你继续学习。