我有几个用于远程控制服务器的脚本。这些脚本都需要设置一些环境变量。我的想法是编写一个简单的解释器包装器,首先设置变量,然后调用实际的解释器。
我尝试如下:
其中一个脚本:
#! ../common/pywrapper.sh
import argparse
import parse_shell_vars
# ....and some more lines
包装器(../common/pywrapper.sh
相对于脚本):
#!/bin/bash
# echo params just to see what's going on
echo $@
# here would be some more configuration
python3.5 $@
现在,当我调用脚本时,我得到:
$ ./my_script.py param1 param2
./my_script.py: line 3: import: command not found
./my_script.py: line 4: import: command not found
如何正确创建“解释器包装器”?
备注:我知道我可以在先前运行的配置脚本中导出变量,或者通过shell的一些初始化脚本全局安装它们。但我认为在这种情况下包装器是一个很好的解决方案,因为我可以直接在任何机器上启动脚本,而无需事先安装。此外,脚本是为阅读它们的人自我解释的。不要猜测所需的安装步骤。所有配置和安装都可以通过编辑包装器来完成。
答案 0 :(得分:1)
#! ../common/pywrapper.sh
import argparse
你正在混合Python和shell。在shebang行中使用Python解释器来处理Python脚本。
建议在Python中完全执行此操作。使用一种脚本语言而不是几种脚本语言更简单,更便携。您可以使用os.environ获取和修改环境变量。