python
调用
shell
脚本方法
python
调用
Shell
脚本,有两种方法:
os.system(cmd)
或
os.popen(cmd),
前者返回值
是脚本的退出状态码,
后者的返回值是脚本执行过程中的输出内容。
实际使用时视需求情况而选
择。
现假定有一个
shell
脚本
test.sh
:
#!/bin/bash
echo "hello world!"
exit 3
os.system(cmd):
该方法在调用完
shell
脚本后,
返回一个
16
位的二进制数,
低位为杀死所调用脚本的信号号码,
高位为脚本的退出状态码,即脚本中
“exit
1”
的代码执行后,
os.system
函数返回值的高位数
则是
1
,如果低位数是
0
的情况下,则函数的返回值是
0×
100,
换算为
10
进制得到
256
。
如果我们需要获得
os.system
的正确返回值,那使用位移运算可以还原返回值:
>>> n = os.system(test.sh)
>>> n >> 8
>>> 3
os.popen(cmd):
这种调用方式是通过管道的方式来实现,函数返回一个
file-like
的对象,里面的内容是脚本输
出的内容(可简单理解为
echo
输出的内容)。使用
os.popen
调用
test.sh
的情况:
>>> file = os.popen(test.sh)
>>>file.read()
>>> „hello world!
\
n‟
明显地,像调用
"ls"
这样的
shell
命令,应该使用
popen
的方法来获得内容。