我正在实现一个将调用python脚本的函数/方法的bash脚本。 我想收集这个函数的返回值到调用bash脚本中的局部variables。
try1.sh包含:
#!/bin/sh RETURN_VALUE=`python -c 'import try3; try3.printTry()'` echo $RETURN_VALUE
现在python脚本:
#!/usr/bin/python def printTry(): print 'Hello World' return 'true'
关于删除bash脚本:
$./tr1.sh Hello World
没有“真”或在那个地方任何其他types的回声标准输出所需。
另外一件事,我希望能够做的是,我的avtual python代码将有大约20-30个函数返回我的软件状态机的各种状态值,我会从bash脚本中调用这些函数。 在bash脚本中,我必须将这些返回值存储在本地variables中,这些variables将在调用bash脚本中实现的状态机逻辑中进一步使用。
对于每个值,我会做python -c'import python_module; python_module.method_name',这将重新枚举一次又一次,我不想要的状态机的定义状态。 我想避免使整个python脚本只用于调用一个函数。 那可能吗?
在这里可以想到什么可能的解决scheme/build议/想法?
我将不胜感激。
为了阐明我的意图,任务是让python脚本replace一部分bash脚本以提高可读性。 bash脚本实际上非常大(约15000行),因此不能完全由一个单独的python脚本replace。 所以可以被改进的部分可以被python替代。
另外,我曾想过在下面的评论中用Victor的build议来replace整个bash脚本,但是在我的情况下这是不可行的。 因此,我将不得不将状态机分成bash和python,其中python将有一些必需的方法返回bash脚本所需的状态值。
问候,优素福Husainy。
如果你不关心python函数打印到标准输出,你可以这样做:
$ py_ret_val=$(python -c ' from __future__ import print_function import sys, try3 print(try3.printTry(), file=sys.stderr) ' 2>&1 1>/dev/null) $ echo $py_ret_val true