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

Getting an error while taking input from an embedded python code

我有一个 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
Enter num 1Traceback (most recent call last):

您通过 stdin 传递您的脚本并且您还希望您的用户在 stdin 上输入。 input 提出了它,因为它一无所获。在任何情况下,您都可以使用不同的构造(如进程替换)来 "embed" python 代码。例如:

...
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 调用包装在另一对中。但是,这也会吞噬您的输入提示(使它们不可见并使 shell 感到困惑)。我不认为 input 让你使用 stderr 提示来解决这个问题。 (它还有另一个对输入执行 eval 的问题,这可能会使您面临一系列其他问题,并且在这种情况下可能不是您想要使用的功能)。

我不完全确定这个脚本的标题,但我希望这能给你一些继续下去的东西。