【发布时间】:2013-12-27 03:45:07
【问题描述】:
我有一个简单的 Python 脚本,它将在 Python 中使用 subprocess mdoule 执行一个 shell 脚本。
下面是我的 Python shell 脚本,它调用testing.sh shell 脚本,它工作正常。
import os
import json
import subprocess
jsonData = '{"pp": [0,3,5,7,9], "sp": [1,2,4,6,8]}'
jj = json.loads(jsonData)
print jj['pp']
print jj['sp']
os.putenv( 'jj1', 'Hello World 1')
os.putenv( 'jj2', 'Hello World 2')
os.putenv( 'jj3', ' '.join( str(v) for v in jj['pp'] ) )
os.putenv( 'jj4', ' '.join( str(v) for v in jj['sp'] ) )
print "start"
subprocess.call(['./testing.sh'])
print "end"
下面是我的 shell 脚本 -
#!/bin/bash
for el1 in $jj3
do
echo "$el1"
done
for el2 in $jj4
do
echo "$el2"
done
for i in $( david ); do
echo item: $i
done
现在我的问题是 -
如果你看到我的 Python 脚本,我正在打印 start,然后执行 shell 脚本,然后打印 end.. 所以假设我正在执行的 shell 脚本有任何问题,那么我不会想打印出end。
所以在上面的例子中,shell 脚本将无法正常运行,因为david 不是 linux 命令,所以它会抛出错误。那么我应该如何查看整个 bash shell 脚本的状态,然后决定是否需要打印end?
我刚刚添加了一个for循环示例,它可以是任何shell脚本..
可以吗?
【问题讨论】:
标签: python bash shell subprocess