使用参数从bash调用Python脚本

我知道我可以使用下面的命令从我的bash脚本运行一个python脚本:

python python_script.py 

但如果我想从我的bash脚本传递一个variables/参数到我的python脚本呢? 我怎样才能做到这一点?

基本上bash会产生一个文件名,然后python会上传,但我需要从bash发送文件名为python,当我打电话。

要在bash脚本中执行python脚本,您需要调用与终端内相同的命令。 例如

 > python python_script.py var1 var2 

要在Python中访问这些变量,你将需要

 import sys print sys.argv[0] # prints python_script.py print sys.argv[1] # prints var1 print sys.argv[2] # prints var2 

使用

 python python_script.py filename 

并在你的Python脚本

 import sys print sys.argv[1] 

sys.argv旁边,还要看看argparse模块,它帮助定义脚本的选项和参数。

argparse模块使编写用户友好的命令行界面变得非常简单。

嵌入式选项:

在bash函数中包装python代码。

 #!/bin/bash function current_datetime { python - <<END import datetime print datetime.datetime.now() END } # Call it current_datetime # Call it and capture the output DT=$(current_datetime) echo Current date and time: $DT 

使用环境变量,将数据传递到您的嵌入式Python脚本。

 #!/bin/bash function line { PYTHON_ARG="$1" python - <<END import os line_len = int(os.environ['PYTHON_ARG']) print '-' * line_len END } # Do it one way line 80 # Do it another way echo $(line 80) 

http://bhfsteve.blogspot.se/2014/07/embedding-python-in-bash-scripts.html

在脚本中使用:

 echo $(python python_script.py arg1 arg2) > /dev/null 

要么

 python python_script.py "string arg" > /dev/null 

该脚本将被执行而不输出。

我有一个bash脚本,调用一个小的python例程来显示一个消息窗口。 因为我需要使用killall来停止python脚本,所以我不能使用上面的方法,因为它会意味着运行killall python,这可能会拿出其他的python程序,所以我使用

pythonprog.py "$argument" #将控制直接返回给bash脚本,所以必须在反引号之外。 由于某种原因,这条消息的预览显示没有命令的任何一边。

只要python脚本可以通过名称而不是python pythonprog.py在cli中运行,就可以在脚本中使用。 如果您需要多个参数,请在引号内的每个参数之间使用一个空格。

并看看getopt模块。 这对我来说相当好!