我有一个调用 python2.6 来读取输入的 bash 脚本,但我遇到了一个错误。 下面是脚本。我正在从终端运行 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
引发了它,因为它什么也没有。在任何情况下,您都可以使用不同的构造(如进程替换)来“嵌入”该 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
的问题,这可能会让您面临一系列其他问题,并且可能不是您想要在这种情况下使用的函数)。
我不完全确定这个脚本的走向,但我希望这能给你一些继续下去的东西。
关于python - 从嵌入式 python 代码获取输入时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49874711/