从嵌入式 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
的问题,这可能会使您面临一系列其他问题,并且在这种情况下可能不是您想要使用的功能)。
我不完全确定这个脚本的标题,但我希望这能给你一些继续下去的东西。
我有一个 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
的问题,这可能会使您面临一系列其他问题,并且在这种情况下可能不是您想要使用的功能)。
我不完全确定这个脚本的标题,但我希望这能给你一些继续下去的东西。