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

标签 python linux bash python-2.6

我有一个调用 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/

相关文章:

linux - 如何通过 ssh 进入远程服务器,运行命令并留在服务器上

bash - 将 stdout 和 stderr 捕获到不同的变量中

python - pandas .loc 返回空数据框

python - 从 Pandas 列中的字符串中选择两个时间段的单词并转换为天数

python - 在 Python 中的 sock.sendall() 之后调用 sock.recv()

linux - 在 BASH 中,有没有办法准确找到所有接口(interface)的 IP 地址?并删除所有其他信息?

python - pip 错误 -> ImportError : No module named helpers

linux - 如何为 Linux 终端前景和背景文本着色

linux - Ctrl-p 和 Ctrl-n 在 Docker 下的行为异常

python - 如何获取 Pandas Dataframe 中特定列值之后的 n 行之前或之后