从 shell 脚本向 python 程序插入参数



我需要从shell脚本执行我的python程序,以便我的python程序中的打印命令将被公开,以便从另一个程序读取。外壳脚本:

#!/bin/bash
if [ $# -lt 1 ] || [ $# -gt 2 ];then
    echo "Usage: $0 APK <duration in seconds>"
    exit 1;
fi
printf "$(python '/root/Desktop/DroidBox_4.1.1/scripts/droidbox.py' $1 $2 -c 'import sys; exec sys.stdin.read()')"

我的 python 程序应该获得参数 $1 和 $2,但它不将它们识别为参数,而是将 -c 和它后面的命令作为参数。

对于以下答案:在我的其他项目中获取流程输入流对我不起作用。 似乎唯一有效的方法是使用 -c 选项和命令"exec sys.stdin.read()"。

谢谢。

它应该按照你编写的方式工作得很好。在精简版本中,这是我得到的:

(bash) test.sh脚本:

#!/bin/bash    
python /tmp/test.py $1 $2

(python)test.py 脚本:

import sys
print "in python"
print sys.argv

最后是shell session

smassey@hacklabs:/tmp $ ./test.sh hello world
in python
['/tmp/test.py', 'hello', 'world']

如您所见,bash 脚本调用 python 脚本,该脚本将值打印到stdout,因此它们与其他定向到stdout的任何内容一样公开:

smassey@hacklabs:/tmp $ ./test.sh hello world | grep python | tr 'a-z' 'A-Z'
IN PYTHON

argparse 模块也非常有用。这允许您向程序添加自定义标志(从用户的角度来看也更方便使用)。

相关内容

  • 没有找到相关文章

最新更新