如何编写一个简单的解释器包装器?

时间:2017-08-02 11:40:05

标签: bash shell

我有几个用于远程控制服务器的脚本。这些脚本都需要设置一些环境变量。我的想法是编写一个简单的解释器包装器,首先设置变量,然后调用实际的解释器。

我尝试如下:

其中一个脚本:

#! ../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的一些初始化脚本全局安装它们。但我认为在这种情况下包装器是一个很好的解决方案,因为我可以直接在任何机器上启动脚本,而无需事先安装。此外,脚本是为阅读它们的人自我解释的。不要猜测所需的安装步骤。所有配置和安装都可以通过编辑包装器来完成。

1 个答案:

答案 0 :(得分:1)

#! ../common/pywrapper.sh

import argparse

你正在混合Python和shell。在shebang行中使用Python解释器来处理Python脚本。

建议在Python中完全执行此操作。使用一种脚本语言而不是几种脚本语言更简单,更便携。您可以使用os.environ获取和修改环境变量。