如何将参数传递给在stdin上提供给解释器的python脚本



我有一个bash脚本,它导出两个辅助python脚本,使用带有";,并从/tmp执行它们。

它运行良好,但当我在具有自动/tmp清理功能的服务器上部署此脚本时,它总是会在一段时间后删除导出的python脚本。

此外,我无法手动将所需的python脚本复制到服务器上,只能执行此脚本。

想到了一个主意

现在我导出像这样的脚本

cat << "SCRIPT" > /tmp/script.py && chmod +x /tmp/script.py

然后用一个参数执行它们

我试着这样做

python << "SCRIPT"

脚本运行,但不需要争论。我试着引用和使用xargs。

有什么方法可以将参数传递给像这样执行的脚本吗?

当您希望它从stdin获取代码时,将Python解释器-作为您希望它读取代码的文件名传递。因此:

python - "argument one" "argument two" "argument three" <<'EOF'
import sys, pprint
pprint.pprint(sys.argv)
EOF

正确发射:

['-', 'argument one', 'argument two', 'argument three']

将代码传递到Python解释器的另一种方法是在命令行上:

pyscript=$(cat <<'EOF'
import sys, pprint
pprint.pprint(sys.argv)
EOF
)
python -c "$pyscript" "argument one" "argument two" "argument three"

其输出略有不同:

['-c', 'argument one', 'argument two', 'argument three']

最新更新